/cp
[official-gcc.git] / gcc / cp / ChangeLog
blobb1e7f2320437511e62ba2f900c2d0021131723a2
1 2018-10-29  Paolo Carlini  <paolo.carlini@oracle.com>
3         * decl.c (create_array_type_for_decl): Add location_t parameter
4         and use it.
5         (grokdeclarator): Adjust call.
7 2018-10-29  Marek Polacek  <polacek@redhat.com>
9         PR c++/87594 - constexpr rejects-valid with range-based for.
10         * constexpr.c (potential_constant_expression_1): If the condition
11         can't be evaluated, return true.
13 2018-10-29  Joseph Myers  <joseph@codesourcery.com>
14             Julian Brown  <julian@codesourcery.com>
16         PR c++/66053
17         * semantics.c (handle_omp_array_sections_1): Allow array
18         sections with "this" pointer for OpenACC.
20 2018-10-25  Jason Merrill  <jason@redhat.com>
22         * parser.c (cp_parser_sizeof_operand): Remove redundant use of
23         grokdeclarator.
25 2018-10-24  Jakub Jelinek  <jakub@redhat.com>
27         PR c++/86288
28         * parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
29         :: is not present and attr_ns non-NULL, canonicalize also attr_id.
30         (cp_parser_attribute_spec): Fix comment typo.
32 2018-10-24  Martin Sebor  <msebor@redhat.com>
34         PR c++/84851
35         * call.c (maybe_warn_class_memaccess): Tighten up.
37 2018-10-17  David Malcolm  <dmalcolm@redhat.com>
39         * Make-lang.in (selftest-c++): New.
40         (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
41         (selftest-c++-gdb, selftest-c++-valgrind): Move here from
42         gcc/Makefile.in.
44 2018-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
46         PR c++/84705
47         * tree.c (build_cplus_new): Avoid duplicate diagnostic about
48         incomplete type, early return error_mark_node if the second
49         argument is error_mark_node.
51 2018-10-12  Nathan Sidwell  <nathan@acm.org>
53         * parser.h (struct cp_parser): Drop implicit_extern_c.
54         * parser.c (cp_debug_parser): Drop implicit_extern_c.
55         (cp_parser_new): Likewise.
56         (cp_parser_translation_unit): Handle implicit extern c here.  Call
57         cp_parser_toplevel_declaration.
58         (cp_parser_toplevel_declaration): New, broken out of ...
59         (cp_parser_declaration_seq_opt): ... here.  Call it.  Drop
60         implicit extern C handling.
62 2018-10-11  Will Wray  <wjwray@gmail.com>
64         PR c++/87364
65         * cxx-pretty-print.c (pp_cxx_enumeration_constant): New function.
66         (cxx_pretty_printer::constant): Use it.
68 2018-10-11  David Malcolm  <dmalcolm@redhat.com>
70         PR c++/84993
71         * call.c (enforce_access): Move diagnostics to...
72         (complain_about_access): ...this new function.
73         * cp-tree.h (class access_failure_info): Rename split out field
74         "m_field_decl" into "m_decl" and "m_diag_decl".
75         (access_failure_info::record_access_failure): Add tree param.
76         (access_failure_info::was_inaccessible_p): New accessor.
77         (access_failure_info::get_decl): New accessor.
78         (access_failure_info::get_diag_decl): New accessor.
79         (access_failure_info::get_any_accessor): New member function.
80         (access_failure_info::add_fixit_hint): New static member function.
81         (complain_about_access): New decl.
82         * typeck.c (access_failure_info::record_access_failure): Update
83         for change to fields.
84         (access_failure_info::maybe_suggest_accessor): Split out into...
85         (access_failure_info::get_any_accessor): ...this new function...
86         (access_failure_info::add_fixit_hint): ...and this new function.
87         (finish_class_member_access_expr): Split out "has no member named"
88         error-handling into...
89         (complain_about_unrecognized_member): ...this new function, and
90         check that the guessed name is accessible along the access path.
91         Only provide a spell-correction fix-it hint if it is; otherwise,
92         attempt to issue an accessor fix-it hint.
94 2018-10-11  Nathan Sidwell  <nathan@acm.org>
96         * parser.c (cp_parser_translation_unit): Return void.  Don't fail
97         at first extra }, simplify logic.
98         (c_parse_file): Call finish_translation_unit here.
100 2018-10-11  Jakub Jelinek  <jakub@redhat.com>
102         PR c++/87582
103         * typeck.c (maybe_warn_about_returning_address_of_local): If
104         whats_returned is a structured binding identifier and the structured
105         binding is a reference, recurse on its initializer.
107         PR c++/87547
108         * rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
109         of TREE_TYPE.
111 2018-10-10  Marek Polacek  <polacek@redhat.com>
113         PR c++/87567 - constexpr rejects call to non-constexpr function.
114         * constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
115         true if the condition is always false.
116         <case WHILE_STMT>: Likewise.
118 2018-10-09  Paolo Carlini  <paolo.carlini@oracle.com>
120         PR c++/84423
121         * pt.c (convert_template_argument): Immediately return error_mark_node
122         if the second argument is erroneous.
123         * parser.c (cp_parser_type_id): Add location_t * parameter.
124         (cp_parser_type_id_1): Likewise.
125         (cp_parser_alias_declaration): Adjust cp_parser_type_id call,
126         obtain the location of the type and save it.
127         (cp_parser_template_type_arg): Adjust.
128         (cp_parser_trailing_type_id): Likewise.
129         * decl.c (grokdeclarator): Improve error message for 'auto' in
130         alias declaration.
132 2018-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
134         PR c++/71128
135         * pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
136         explicitly instantiated.
138 2018-10-05  David Malcolm  <dmalcolm@redhat.com>
140         PR c++/56856
141         * call.c (build_over_call): Build a vec of locations of the
142         arguments before the call to maybe_constant_value, and pass to
143         check_function_arguments.
144         * cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
145         c_get_substring_location.
146         * parser.c (cp_parser_string_literal): Capture string
147         concatenation locations.
149 2018-10-04  Nathan Sidwell  <nathan@acm.org>
151         * lang-specs.h: Use string contatenation, not line splicing.
153 2018-10-03  Jason Merrill  <jason@redhat.com>
155         Implement P0840, language support for empty objects.
156         * tree.c (handle_no_unique_addr_attribute): New.
157         (cxx_attribute_table): Add [[no_unique_address]].
158         * class.c (field_poverlapping_p): New.
159         (layout_class_type): Check it.  Adjust DECL_SIZE of potentially
160         overlapping fields.
161         (layout_empty_base_or_field): Rename from layout_empty_base, handle
162         FIELD_DECL as well.
163         (build_base_field, record_subobject_offsets): Adjust.
165 2018-10-03  Martin Liska  <mliska@suse.cz>
167         PR gcov-profile/86109
168         * parser.c (cp_parser_lambda_declarator_opt):
169         Set DECL_LAMBDA_FUNCTION for lambdas.
171 2018-10-02  Richard Biener  <rguenther@suse.de>
173         * name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.
175 2018-09-28  Eric Botcazou  <ebotcazou@adacore.com>
176             Pierre-Marie de Rodat  <derodat@adacore.com>
178         * method.c (use_thunk): Adjust call to cgraph_node::create_thunk.
180 2018-09-28  Richard Biener  <rguenther@suse.de>
182         * error.c (cp_print_error_function): Simplify by eliding
183         the BLOCK_ABSTRACT_ORIGIN chasing.
185 2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
187         PR c++/84940
188         * semantics.c (finish_unary_op_expr): Check return value of
189         build_x_unary_op for error_mark_node.
191 2018-09-25  Jakub Jelinek  <jakub@redhat.com>
193         PR c++/87398
194         * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
195         look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.
197 2018-09-25  Martin Liska  <mliska@suse.cz>
199         * name-lookup.c (namespace_scope_ht_size): Remove
200         unused function.
201         * parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
203 2018-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
205         PR c++/85070
206         * method.c (lazily_declare_fn): During error-recovery add_method
207         may return false.
209 2018-09-21  Marek Polacek  <polacek@redhat.com>
211         PR c++/87372 - __func__ constexpr evaluation.
212         * constexpr.c (maybe_constant_init_1): Pass false for strict down to
213         cxx_eval_outermost_constant_expr.
215 2018-09-20  Marek Polacek  <polacek@redhat.com>
217         PR c++/87109 - wrong ctor with maybe-rvalue semantics.
218         * call.c (build_user_type_conversion_1): Refine the maybe-rvalue
219         check to only return if we're converting the return value to a base
220         class.
222 2018-09-20  Allan Sandfeld Jensen  <allan.jensen@qt.io>
224         * g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
226 2018-09-20  Jason Merrill  <jason@redhat.com>
228         PR c++/87075 - ICE with constexpr array initialization.
229         * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
231 2018-09-19  Marek Polacek  <polacek@redhat.com>
233         Add -Wclass-conversion.
234         * decl.c (grok_op_properties): Change a warning from -Wconversion to
235         -Wclass-conversion.  Make it print the types.
237 2018-09-19  Paolo Carlini  <paolo.carlini@oracle.com>
239         PR c++/87324
240         * parser.c (cp_parser_initializer_list): Assign error_mark_node
241         to the index upon error.
243 2018-09-19  Marek Polacek  <polacek@redhat.com>
245         PR c++/87357 - missing -Wconversion warning
246         * decl.c (grok_op_properties): Remove diagnostic parts mentioning
247         a conversion to a reference to void.  Use
248         same_type_ignoring_top_level_qualifiers_p rather than comparing types
249         directly.
251 2018-09-18  Marek Polacek  <polacek@redhat.com>
253         P1064R0 - Allowing Virtual Function Calls in Constant Expressions
254         * call.c (build_over_call): No longer check if we're outside a template
255         function.
256         * class.c (build_vtbl_initializer): Build vtable's constructor with
257         indexes.
258         * constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
259         initializer.  Handle OBJ_TYPE_REF.
260         (potential_constant_expression_1): Handle OBJ_TYPE_REF.
261         * decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
262         (initialize_artificial_var): Mark the variable as constexpr.
263         (grokdeclarator): Change error to pedwarn.  Only warn when
264         pedantic and not C++2a.
266 2018-09-18  Paolo Carlini  <paolo.carlini@oracle.com>
268         PR c++/85065
269         * cp-tree.h (NON_ERROR): New.
270         * pt.c (auto_hash::hash): Use it.
271         (do_auto_deduction): Likewise.
273 2018-09-18  Nathan Sidwell  <nathan@acm.org>
275         PR c++/86881
276         * name-lookup.c (check_local_shadow): Ignore auto types.
278 2018-09-17  David Malcolm  <dmalcolm@redhat.com>
280         * error.c (range_label_for_type_mismatch::get_text): Update for
281         new param.
283 2018-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
285         * typeck2.c (digest_init_r): Fix overlength strings.
287 2018-09-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
289         PR c++/87093
290         * method.c (constructible_expr): We're in an unevaluated context
291         in all cases, not just for class targets.
293 2018-09-12  David Malcolm  <dmalcolm@redhat.com>
295         PR c++/85110
296         * call.c (struct conversion_info): Add "loc" field.
297         (arg_conversion_rejection): Add "loc" param, using it to
298         initialize the new field.
299         (bad_arg_conversion_rejection): Likewise.
300         (explicit_conversion_rejection): Initialize the new field to
301         UNKNOWN_LOCATION.
302         (template_conversion_rejection): Likewise.
303         (add_function_candidate): Pass on the argument location to the new
304         param of arg_conversion_rejection.
305         (add_conv_candidate): Likewise.
306         (build_builtin_candidate): Likewise.
307         (build_user_type_conversion_1): Likewise.
308         (single_z_candidate): New function.
309         (maybe_get_bad_conversion_for_unmatched_call): New function.
310         (complain_about_bad_argument): New function, based on part of
311         convert_for_assignment.
312         (build_new_method_call_1): Split out handling of the "no viable
313         candidates" case into...
314         (complain_about_no_candidates_for_method_call): ...this new
315         function, and use the new functions above to special-case the
316         handling of a single non-viable candidate due to a bad argument.
317         * cp-tree.h (complain_about_bad_argument): New decl.
318         * typeck.c (convert_for_assignment): Split out one error-handling
319         case into complain_about_bad_argument.
321 2018-09-09  Cesar Philippidis  <cesar@codesourcery.com>
322             Julian Brown  <julian@codesourcery.com>
324         PR middle-end/86336
325         * semantics.c (finish_omp_clauses): Treat C++ references the same in
326         OpenACC as OpenMP.
328 2018-08-28  Martin Liska  <mliska@suse.cz>
330         * constexpr.c (cxx_eval_call_expression): Add quotes
331         to -fconstexpr-depth=.
333 2018-09-10  Marek Polacek  <polacek@redhat.com>
335         * class.c (build_vtbl_ref): Remove.
336         (build_vtbl_ref_1): Rename to build_vtbl_ref.
337         (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
339 2018-09-08  Marek Polacek  <polacek@redhat.com>
341         PR c++/87150 - wrong ctor with maybe-rvalue semantics.
342         * call.c (struct conversion): Update commentary.
343         (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
344         for ck_base.
346 2018-09-08  Jason Merrill  <jason@redhat.com>
348         PR c++/86678 - constexpr function with non-constant after return.
349         * constexpr.c (potential_constant_expression_1): Add jump_target.
350         (breaks): Check for BREAK_STMT.
351         (continues): Check for CONTINUE_STMT.
353 2018-09-08  Marek Polacek  <polacek@redhat.com>
355         * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
356         RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
358 2018-09-07  Marek Polacek  <polacek@redhat.com>
360         PR c++/87152 - range-based for loops with initializer broken in templates.
361         * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
362         Recur into RANGE_FOR_INIT_STMT.
363         * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
364         * cp-tree.h (RANGE_FOR_INIT_STMT): Define.
365         * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
366         RANGE_FOR_INIT_STMT.
367         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
368         RANGE_FOR_INIT_STMT.
369         * semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
370         Do put the init statement in RANGE_FOR_INIT_STMT.
371         (finish_range_for_decl): Pop it for templates.
373 2018-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
375         * decl.c (check_initializer): Call cp_complete_array_type.
377 2018-09-05  Marek Polacek  <polacek@redhat.com>
379         PR c++/87109, wrong overload with ref-qualifiers.
380         * call.c (build_user_type_conversion_1): Use NULL instead of 0.  Bail
381         out if performing the maybe-rvalue overload resolution and a conversion
382         function is getting called.
384         PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
385         * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
386         to std::move or std::forward.
387         (is_std_forward_p): New function.
389 2018-09-05  Pádraig Brady  <p@draigbrady.com>
391         PR c++/87185
392         * lambda.c (prune_lambda_captures): Protect against const_vars.get
393         returning NULL.
395 2018-09-04  Marek Polacek  <polacek@redhat.com>
397         * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
398         * except.c (build_throw): Use it.  Use CP_TYPE_VOLATILE_P.
399         * typeck.c (treat_lvalue_as_rvalue_p): No longer static.  Add PARM_OK
400         parameter.
401         (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
402         (check_return_expr): Likewise.
404 2018-09-03  Paolo Carlini  <paolo.carlini@oracle.com>
406         PR c++/84980
407         * constraint.cc (finish_shorthand_constraint): Early return if the
408         constraint is erroneous.
410 2018-09-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
412         * decl.c (eval_check_narrowing): Remove.
413         (check_initializer): Move call to braced_list_to_string from here ...
414         * typeck2.c (store_init_value): ... to here.
415         (digest_init_r): Remove handing of signed/unsigned char strings.
417 2018-08-31  Nathan Sidwell  <nathan@acm.org>
419         PR c++/87155
420         PR c++/84707
421         * name-lookup.c (name_lookup::search_namespace): Don't look at
422         inlines when searching for NULL names.
424         * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
425         of return types and parms.
426         * parser.c (cp_parser_parameter_declaration_clause): Likewise,
427         '()' always means '(void)'.
429 2018-08-29  Jakub Jelinek  <jakub@redhat.com>
431         PR c++/87095
432         * decl.c (begin_destructor_body): If current_class_type has
433         virtual bases and the primary base is nearly empty virtual base,
434         voidify clearing of vptr and make it conditional on in-charge
435         argument.
437 2018-08-29  Paolo Carlini  <paolo.carlini@oracle.com>
439         PR c++/85265
440         * parser.c (cp_parser_introduction_list): If cp_parser_identifier
441         returns error_mark_node early exit the loop.
442         (cp_parser_template_introduction): Improve error-recovery, remove
443         error call about empty introduction-list.
445 2018-08-29  David Malcolm  <dmalcolm@redhat.com>
447         PR c++/85110
448         * call.c (print_conversion_rejection): Add "fn" param and use it
449         for "no known conversion" messages to underline the pertinent
450         param.
451         (print_z_candidate): Supply "fn" to the new param above.
453 2018-08-29  Jakub Jelinek  <jakub@redhat.com>
455         PR c++/87122
456         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
457         processing_template_decl and decl is structured binding decl, call
458         cp_finish_decomp.
460 2018-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
462         PR c++/86546
463         * decl.c (finish_case_label): If the type is erroneous early
464         return error_mark_node.
466 2018-08-27  David Malcolm  <dmalcolm@redhat.com>
468         PR c++/63392
469         * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
470         hint.
472 2018-08-27  Jakub Jelinek  <jakub@redhat.com>
474         PR c++/86993
475         * cp-tree.h (cxx_readonly_error): Add location_t argument.
476         * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
477         ERROR_FOR_ASSIGNMENT macro and readonly_error.  Add LOC argument
478         to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
479         pass LOC to it.  Formatting fixes.
480         * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
481         (cp_build_modify_expr): Pass loc to cxx_readonly_error.
482         * semantics.c (finish_asm_stmt): Pass input_location to
483         cxx_readonly_error.
485 2018-08-27  David Malcolm  <dmalcolm@redhat.com>
487         PR c++/87091
488         * decl.c (grokdeclarator): Update for conversion of show_caret_p
489         to a tri-state.
490         * error.c (cp_printer): Likewise.
491         * name-lookup.c (maybe_suggest_missing_std_header): Update call to
492         maybe_add_include_fixit to suggest overriding the location, as it
493         is for a note.
494         * parser.c (cp_parser_string_literal): Update for conversion of
495         show_caret_p to a tri-state.
496         (cp_parser_elaborated_type_specifier): Likewise.
497         (set_and_check_decl_spec_loc): Likewise.
498         * pt.c (listify): Update call to maybe_add_include_fixit to not
499         override the location, as it is for an error.
500         * rtti.c (typeid_ok_p): Likewise.
502 2018-08-27  Martin Liska  <mliska@suse.cz>
504         * call.c (build_call_a): Use new function
505         fndecl_built_in_p and remove check for FUNCTION_DECL if
506         possible.
507         (build_cxx_call): Likewise.
508         * constexpr.c (constexpr_fn_retval): Likewise.
509         (cxx_eval_builtin_function_call): Likewise.
510         (cxx_eval_call_expression): Likewise.
511         (potential_constant_expression_1): Likewise.
512         * cp-gimplify.c (cp_gimplify_expr): Likewise.
513         (cp_fold): Likewise.
514         * decl.c (decls_match): Likewise.
515         (validate_constexpr_redeclaration): Likewise.
516         (duplicate_decls): Likewise.
517         (make_rtl_for_nonlocal_decl): Likewise.
518         * name-lookup.c (consider_binding_level): Likewise.
519         (cp_emit_debug_info_for_using): Likewise.
520         * semantics.c (finish_call_expr): Likewise.
521         * tree.c (builtin_valid_in_constant_expr_p): Likewise.
523 2018-08-26  Marek Polacek  <polacek@redhat.com>
525         PR c++/87080
526         * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.
528         PR c++/87029, Implement -Wredundant-move.
529         * typeck.c (treat_lvalue_as_rvalue_p): New function.
530         (maybe_warn_pessimizing_move): Call convert_from_reference.
531         Warn about redundant moves.
533 2018-08-24  Marek Polacek  <polacek@redhat.com>
535         PR c++/67012
536         PR c++/86942
537         * decl.c (grokdeclarator): Disallow functions with trailing return
538         type with decltype(auto) as its type.  Also check the function if
539         it's inner declarator doesn't exist
541 2018-08-21  Marek Polacek  <polacek@redhat.com>
543         PR c++/86499
544         * parser.c (cp_parser_lambda_introducer): Give error if a non-local
545         lambda has a capture-default.
547 2018-08-21  Paolo Carlini  <paolo.carlini@oracle.com>
549         * decl.c (check_static_variable_definition): Change to return void.
551 2018-08-21  Marek Polacek  <polacek@redhat.com>
553         PR c++/86981, Implement -Wpessimizing-move.
554         * typeck.c (decl_in_std_namespace_p): New.
555         (is_std_move_p): New.
556         (maybe_warn_pessimizing_move): New.
557         (can_do_nrvo_p): New, factored out of ...
558         (check_return_expr): ... here.  Warn about potentially harmful
559         std::move in a return statement.
561         PR c++/65043
562         * call.c (standard_conversion): Set check_narrowing.
563         * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
564         than comparing with INTEGER_TYPE.
566         * cp-tree.h: Fix typo.
568 2018-08-20  David Malcolm  <dmalcolm@redhat.com>
570         PR other/84889
571         * call.c (build_user_type_conversion_1): Add auto_diagnostic_group
572         instance(s).
573         (print_error_for_call_failure): Likewise.
574         (build_op_call_1): Likewise.
575         (build_conditional_expr_1): Likewise.
576         (build_new_op_1): Likewise.
577         (build_op_delete_call): Likewise.
578         (convert_like_real): Likewise.
579         (build_over_call): Likewise.
580         (build_new_method_call_1): Likewise.
581         (joust): Likewise.
582         * class.c (check_tag): Likewise.
583         (finish_struct_anon_r): Likewise.
584         (one_inherited_ctor): Likewise.
585         (finalize_literal_type_property): Likewise.
586         (explain_non_literal_class): Likewise.
587         (find_flexarrays): Likewise.
588         (resolve_address_of_overloaded_function): Likewise.
589         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
590         (is_valid_constexpr_fn): Likewise.
591         (cx_check_missing_mem_inits): Likewise.
592         * cp-gimplify.c (cp_genericize_r): Likewise.
593         * cvt.c (maybe_warn_nodiscard): Likewise.
594         * decl.c (warn_extern_redeclared_static): Likewise.
595         (check_redeclaration_exception_specification): Likewise.
596         (check_no_redeclaration_friend_default_args): Likewise.
597         (duplicate_decls): Likewise.
598         (redeclaration_error_message): Likewise.
599         (warn_misplaced_attr_for_class_type): Likewise.
600         * decl2.c (finish_static_data_member_decl): Likewise.
601         (no_linkage_error): Likewise.
602         (cp_warn_deprecated_use): Likewise.
603         * error.c (qualified_name_lookup_error): Likewise.
604         * friend.c (make_friend_class): Likewise.
605         (do_friend): Likewise.
606         * init.c (perform_member_init): Likewise.
607         (build_new_1): Likewise.
608         (build_vec_delete_1): Likewise.
609         (build_delete): Likewise.
610         * lex.c (unqualified_name_lookup_error): Likewise.
611         * name-lookup.c (check_extern_c_conflict): Likewise.
612         (inform_shadowed): New function.
613         (check_local_shadow): Add auto_diagnostic_group instances,
614         replacing goto "inform_shadowed" label with call to subroutine.
615         (set_local_extern_decl_linkage): Add auto_diagnostic_group
616         instance(s).
617         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
618         (cp_parser_namespace_name): Likewise.
619         * pt.c (check_specialization_namespace): Likewise.
620         (check_template_variable): Likewise.
621         (warn_spec_missing_attributes): Likewise.
622         (check_explicit_specialization): Likewise.
623         (process_partial_specialization): Likewise.
624         (lookup_template_class_1): Likewise.
625         (finish_template_variable): Likewise.
626         (do_auto_deduction): Likewise.
627         * search.c (check_final_overrider): Likewise.
628         (look_for_overrides_r): Likewise.
629         * tree.c (maybe_warn_parm_abi): Likewise.
630         * typeck.c (cxx_sizeof_expr): Likewise.
631         (cp_build_function_call_vec): Likewise.
632         (cp_build_binary_op): Likewise.
633         (convert_for_assignment): Likewise.
634         (maybe_warn_about_returning_address_of_local): Likewise.
635         * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
636         (check_narrowing): Likewise.
638 2018-08-17  David Malcolm  <dmalcolm@redhat.com>
640         * typeck.c (string_conv_p): Extract location from EXP and use it
641         in preference to input_location when issuing warnings.
643 2018-08-15  David Malcolm  <dmalcolm@redhat.com>
645         * call.c: Include "gcc-rich-location.h".
646         (convert_like_real): Add range label for "invalid conversion"
647         diagnostic.
648         (perform_implicit_conversion_flags): Add type label to the
649         "could not convert" error.
650         * error.c: Include "gcc-rich-location.h".
651         (range_label_for_type_mismatch::get_text): New function.
652         * typeck.c (convert_for_assignment): Add type label to
653         the "cannot convert" error if a location is available.
655 2018-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
657         * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
658         emit an error instead of a permerror.
660 2018-08-13  Marek Polacek  <polacek@redhat.com>
662         PR c++/57891
663         * call.c (struct conversion): Add check_narrowing_const_only.
664         (build_converted_constant_expr): Set check_narrowing and
665         check_narrowing_const_only.  Give error if expr is error node.
666         (convert_like_real): Pass it to check_narrowing.
667         * cp-tree.h (check_narrowing): Add a default parameter.
668         * decl.c (compute_array_index_type): Use input_location instead of
669         location_of.
670         * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
671         * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
672         expressions.  Call maybe_constant_value instead of
673         fold_non_dependent_expr.  Don't mention { } in diagnostic.  Only check
674         narrowing for constants if CONST_ONLY.
676 2018-08-13  Martin Sebor  <msebor@redhat.com>
678         PR tree-optimization/71625
679         * decl.c (check_initializer):  Call braced_list_to_string.
680         (eval_check_narrowing): New function.
681         * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
682         as initilizers for all narrow character types.
684 2018-08-13  Marek Polacek  <polacek@redhat.com>
686         P0806R2 - Deprecate implicit capture of this via [=]
687         * lambda.c (add_default_capture): Formatting fixes.  Warn about
688         deprecated implicit capture of this via [=].
690         PR c++/86915
691         * decl.c (create_array_type_for_decl): Handle null name.
693 2018-08-10  Jason Merrill  <jason@redhat.com>
695         PR c++/86728 - C variadic generic lambda.
696         * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
697         a pack if it's followed by a declarator-id.
699 2018-08-08  Jakub Jelinek  <jakub@redhat.com>
701         P0595R1 - is_constant_evaluated
702         * cp-tree.h (enum cp_built_in_function): New.
703         (maybe_constant_init): Add pretend_const_required argument.
704         * typeck2.c (store_init_value): Pass true as new argument to
705         maybe_constant_init.
706         * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
707         for BUILT_IN_UNREACHABLE.
708         (struct constexpr_ctx): Add pretend_const_required field.
709         (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
710         macro.  Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED.  Check also
711         DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
712         (cxx_eval_outermost_constant_expr): Add pretend_const_required
713         argument, initialize pretend_const_required field in ctx.  If the
714         result is TREE_CONSTANT and non_constant_p, retry with
715         pretend_const_required false if it was true.
716         (is_sub_constant_expr): Initialize pretend_const_required_field in
717         ctx.
718         (cxx_constant_value): Pass true as pretend_const_required to
719         cxx_eval_outermost_constant_expr.
720         (maybe_constant_value): Pass false as pretend_const_required to
721         cxx_eval_outermost_constant_expr.
722         (fold_non_dependent_expr): Likewise.
723         (maybe_constant_init_1): Add pretend_const_required argument, pass it
724         down to cxx_eval_outermost_constant_expr.  Pass !allow_non_constant
725         instead of false as strict to cxx_eval_outermost_constant_expr.
726         (maybe_constant_init): Add pretend_const_required argument, pass it
727         down to maybe_constant_init_1.
728         (cxx_constant_init): Pass true as pretend_const_required to
729         maybe_constant_init_1.
730         * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
731         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
732         (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
733         * decl.c: Include langhooks.h.
734         (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
735         built-in.
736         * tree.c (builtin_valid_in_constant_expr_p): Return true for
737         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
738         * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
740         PR c++/86836
741         * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
742         before tsubst_init, not after it.
744         PR c++/86738
745         * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
746         NULL pointer set *non_constant_p to true.
747         (cxx_eval_component_reference): For dereferencing of a NULL pointer,
748         set *non_constant_p to true and return t.
750 2018-08-07  Paolo Carlini  <paolo.carlini@oracle.com>
752         PR c++/59480, DR 136
753         * decl.c (check_no_redeclaration_friend_default_args): New.
754         (duplicate_decls): Use the latter; also check that a friend
755         declaration specifying default arguments is a definition.
757 2018-08-07  Ville Voutilainen  <ville.voutilainen@gmail.com>
759         PR c++/79133
760         * name-lookup.c (check_local_shadow): Reject captures and parameters
761         with the same name.
763 2018-08-06  Marek Polacek  <polacek@redhat.com>
765         PR c++/86767
766         * constexpr.c (cxx_eval_statement_list): Handle continue.
768 2018-08-03  David Malcolm  <dmalcolm@redhat.com>
769             Jonathan Wakely  <jwakely@redhat.com>
771         * decl.c: Include "gcc-rich-location.h".
772         (add_return_star_this_fixit): New function.
773         (finish_function): When warning about missing return statements in
774         functions returning non-void, add a "return *this;" fix-it hint for
775         assignment operators.
777 2018-08-03  Jason Merrill  <jason@redhat.com>
779         PR c++/86706
780         * class.c (build_base_path): Use currently_open_class.
782 2018-08-02  David Malcolm  <dmalcolm@redhat.com>
784         * error.c (cxx_print_error_function): Duplicate "file" before
785         passing it to pp_set_prefix.
786         (cp_print_error_function): Use pp_take_prefix when saving the
787         existing prefix.
789 2018-08-02  Richard Biener  <rguenther@suse.de>
791         PR c++/86763
792         * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
793         to the CLASSTYPE_AS_BASE.
795 2018-08-01  Martin Sebor  <msebor@redhat.com>
797         PR tree-optimization/86650
798         * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
799         TREE_BLOCK (t) from within percent_K_format to this callsite.
801 2018-08-01  Paolo Carlini  <paolo.carlini@oracle.com>
803         PR c++/86661
804         * class.c (note_name_declared_in_class): Use location_of in permerror
805         instead of DECL_SOURCE_LOCATION (for OVERLOADs).
807 2018-07-31  Tom de Vries  <tdevries@suse.de>
809         PR debug/86687
810         * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
812 2018-07-31  Jakub Jelinek  <jakub@redhat.com>
814         P1008R1 - prohibit aggregates with user-declared constructors
815         * class.c (check_bases_and_members): For C++2a set
816         CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
817         type_has_user_provided_or_explicit_constructor.
819 2018-07-31  Martin Liska  <mliska@suse.cz>
821         PR c++/86653
822         * parser.c (cp_parser_condition): Initialize non_constant_p
823         to false.
825 2018-07-28  David Malcolm  <dmalcolm@redhat.com>
827         * error.c (cp_printer): In the leading comment, move "%H" and "%I"
828         into alphabetical order, and add missing "%G" and "%K".  Within
829         the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
830         cases are in alphabetical order.
832 2018-07-25  Jakub Jelinek  <jakub@redhat.com>
834         * cp-tree.h (enum cp_tree_index): Add
835         CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
836         and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
837         (abi_tag_identifier, aligned_identifier, begin_identifier,
838         end_identifier, get__identifier, gnu_identifier,
839         tuple_element_identifier, tuple_size_identifier, type_identifier,
840         value_identifier, fun_identifier, closure_identifier): Define.
841         * decl.c (initialize_predefined_identifiers): Initialize the above
842         identifiers.
843         (get_tuple_size): Use tuple_size_identifier instead of
844         get_identifier ("tuple_size") and value_identifier instead of
845         get_identifier ("value").
846         (get_tuple_element_type): Use tuple_element_identifier instead of
847         get_identifier ("tuple_element") and type_identifier instead of
848         get_identifier ("type").
849         (get_tuple_decomp_init): Use get__identifier instead of
850         get_identifier ("get").
851         * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
852         get_identifier ("_FUN").
853         * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
854         instead of get_identifier ("__closure").
855         (cp_parser_std_attribute): Use gnu_identifier instead of
856         get_identifier ("gnu").
857         (cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
858         instead of get_identifier ("aligned").
859         * class.c (check_abi_tags, inherit_targ_abi_tags): Use
860         abi_tag_identifier instead of get_identifier ("abi_tag").
862         PR c++/85515
863         * cp-tree.h (enum cp_tree_index): Add
864         CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
865         (for_range__identifier, for_begin__identifier, for_end__identifier,
866         for_range_identifier, for_begin_identifier, for_end_identifier):
867         Define.
868         * decl.c (initialize_predefined_identifiers): Initialize
869         for_{range,begin,end}{,_}_identifier.
870         * parser.c (build_range_temp): Use for_range__identifier instead of
871         get_identifier ("__for_range").
872         (cp_convert_range_for): Use for_begin__identifier and
873         for_end__identifier instead of get_identifier ("__for_begin") and
874         get_identifier ("__for_end").
875         * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
876         local symbols to "__for_{range,begin,end}".
878 2018-07-23  Jakub Jelinek  <jakub@redhat.com>
880         PR c++/86569
881         * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
882         of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
883         or warn_nonnull_compare.
885 2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
887         Revert fix for c++/59480 (and testsuite followup)
889         2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
891         PR c++/59480, DR 136
892         * decl.c (check_no_redeclaration_friend_default_args): New.
893         (duplicate_decls): Use the latter; also check that a friend
894         declaration specifying default arguments is a definition.
896 2018-07-18  Jakub Jelinek  <jakub@redhat.com>
898         PR c++/86550
899         * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
900         specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
902 2018-07-18  Marek Polacek  <polacek@redhat.com>
904         PR c++/86190 - bogus -Wsign-conversion warning
905         * typeck.c (cp_build_binary_op): Fix formatting.  Add a warning
906         sentinel.
908 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
910         PR c++/59480, DR 136
911         * decl.c (check_no_redeclaration_friend_default_args): New.
912         (duplicate_decls): Use the latter; also check that a friend
913         declaration specifying default arguments is a definition.
915 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
917         * class.c (note_name_declared_in_class): Prefer permerror + inform
918         to a pair of permerrors; use DECL_SOURCE_LOCATION.
920 2018-07-18  Richard Biener  <rguenther@suse.de>
922         PR debug/86523
923         * decl2.c (c_parse_final_cleanups): Call write_out_vars before
924         start_static_storage_duration_function sets current_function_decl.
926 2018-07-17  Jason Merrill  <jason@redhat.com>
928         PR c++/86480 - nested variadic lambda and constexpr if.
929         * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
930         IF_STMT_EXTRA_ARGS.
931         * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
932         cp_unevaluated_operand.
933         [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
935 2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>
937         * class.c (resolve_address_of_overloaded_function): Don't emit an
938         inform if the matching permerror returns false.
939         * pt.c (check_specialization_namespace): Likewise.
941 2018-07-16  Jakub Jelinek  <jakub@redhat.com>
943         PR c++/3698
944         PR c++/86208
945         * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
946         in TREE_USED flag from stmt to h->to.
948 2018-07-13  Nathan Sidwell  <nathan@acm.org>
950         PR c++/86374
951         * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
952         contexts that are classes.
953         * parser.c (cp_parser_template_id): Combine entering_scope decl &
954         initializer.
956 2018-07-12  Jakub Jelinek  <jakub@redhat.com>
958         * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
959         type here, instead add "omp declare target implicit" attribute.  Add
960         that attribute instead of "omp declare target" also when
961         processing_template_decl.
962         * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
963         and before calling cp_omp_mappable_type call complete_type.
965 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
967         PR sanitizer/86406
968         * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
969         DEBUG_BEGIN_STMTs.
971         PR c++/86443
972         * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
973         instead of setting *lastp turn orig_declv elt into a TREE_LIST.
974         (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
975         * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
976         TREE_LIST for both the original class iterator and the "last" helper
977         var.
979 2018-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
981         * decl.c (grokdeclarator): Use rich_location::add_range in three
982         more places; include gcc-rich-location.h.
984 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
986         * decl.c (build_enumerator): Change overflow type to overflow_type.
987         * init.c (build_new_1): Same.
989 2018-07-05  Nathan Sidwell  <nathan@acm.org>
991         * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
992         NO_IMPLICIT_EXTERN_C.
993         * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
995 2018-07-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
997         PR c++/86398
998         * method.c (is_trivially_xible): Return false
999         if is_xible_helper returns a NULL_TREE.
1001 2018-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
1003         * decl.c (min_location): New.
1004         (smallest_type_quals_location): Use the latter.
1005         (check_concept_fn): Use DECL_SOURCE_LOCATION.
1006         (grokdeclarator): Use accurate locations in a number of error
1007         messages involving ds_thread, ds_storage_class, ds_virtual,
1008         ds_constexpr, ds_typedef and ds_friend; exploit min_location.
1010 2018-07-03  Marek Polacek  <polacek@redhat.com>
1012         PR c++/86201
1013         * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
1015 2018-07-03  Jason Merrill  <jason@redhat.com>
1017         PR c++/86378 - functional cast in noexcept-specifier.
1018         * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
1020 2018-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
1022         * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
1023         in error message about __thread and thread_local at the same time.
1025 2018-06-29  Marek Polacek  <polacek@redhat.com>
1027         PR c++/86184
1028         * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
1030 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
1032         * parser.c (cp_parser_error_1): After issuing a conflict marker
1033         error, consume tokens until the end of the source line.
1035 2018-06-28  Jason Merrill  <jason@redhat.com>
1037         PR c++/86342 - -Wdeprecated-copy and system headers.
1038         * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
1039         in system headers.
1041 2018-06-27  David Malcolm  <dmalcolm@redhat.com>
1043         PR c++/86329
1044         * name-lookup.c (consider_binding_level): Filter out names that
1045         match anon_aggrname_p.
1047 2018-06-27  Jason Merrill  <jason@redhat.com>
1049         * name-lookup.c (do_pushtag): If we skip a class level, also skip
1050         its template level.
1052 2018-06-26  Jason Merrill  <jason@redhat.com>
1054         PR c++/86320 - memory-hog with std::array of pair
1055         * typeck2.c (process_init_constructor_array): Only compute a
1056         constant initializer once.
1058         PR c++/80290 - memory-hog with std::pair.
1059         * pt.c (fn_type_unification): Add convs parameter.
1060         (check_non_deducible_conversion): Remember conversion.
1061         (check_non_deducible_conversions): New.  Do checks here.
1062         (type_unification_real): Not here.  Remove flags parm.
1063         * call.c (add_function_candidate): Make convs a parameter.
1064         Don't recalculate the conversion if it's already set.
1065         (add_template_candidate_real): Allocate convs here.
1066         (good_conversion, conv_flags): New.
1068 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
1070         PR c++/86291
1071         * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
1072         type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
1074 2018-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1076         * decl.c (bad_specifiers): Add const location_t* parameter and
1077         use locations in error messages about 'inline' and 'virtual'.
1078         (mark_inline_variable): Add location_t parameter and use it in
1079         error_at and pedwarn messages.
1080         (grokdeclarator): Use declspecs->locations[ds_constexpr],
1081         declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
1082         declspecs->locations[ds_inline] in many error messages; adjust
1083         bad_specifiers and mark_inline_variable calls.
1084         (grokvardecl): Use declspecs->locations[ds_concept] in error message.
1086 2018-06-22  Jason Merrill  <jason@redhat.com>
1088         PR c++/86219 - ICE with erroneous initializer in template.
1089         * constexpr.c (fold_non_dependent_expr): Add complain parm.
1090         * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
1091         Pass it.
1092         * call.c (build_cxx_call): Don't mess with builtins in a template.
1093         * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
1094         produce a constant value, go back to the uninstantiated form.
1096         Avoid taking the address of something just because it's in parens.
1097         * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
1098         (cxx_fold_indirect_ref): Use it.
1099         (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
1100         * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
1101         * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
1102         static_cast to reference type.
1103         (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
1105 2018-06-21  Jason Merrill  <jason@redhat.com>
1107         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
1109         * name-lookup.c (do_push_to_top_level): Don't allocate
1110         current_lang_base.
1111         (do_pop_from_top_level): Release current_lang_base.
1113         Let -fmem-report see callers of cxx_make_type.
1114         * lex.c (cxx_make_type): Add MEM_STAT_DECL.
1115         (make_class_type): Likewise.
1116         (cxx_make_type_hook): New.
1117         * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
1119 2018-06-20  Nathan Sidwell  <nathan@acm.org>
1121         PR c++/85634
1122         * friend.c (add_friend): Keep lookup sets of tempate sets.
1124 2018-06-20  Paolo Carlini  <paolo.carlini@oracle.com>
1126         * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
1127         tidy handling of a null location_t argument; use proper location
1128         information in a few additional error messages.
1129         (grokdeclarator): Update calls.
1131 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
1132             Thomas Schwinge <thomas@codesourcery.com>
1133             Cesar Philippidis  <cesar@codesourcery.com>
1135         * parser.c (cp_parser_omp_clause_name): Add support for finalize
1136         and if_present. Make present_or_{copy,copyin,copyout,create} aliases
1137         to their non-present_or_* counterparts. Make 'self' an alias to
1138         PRAGMA_OACC_CLAUSE_HOST.
1139         (cp_parser_oacc_data_clause): Update GOMP mappings for
1140         PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
1141         PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
1142         (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
1143         Remove support for present_or_* clauses.
1144         (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
1145         (OACC_PARALLEL_CLAUSE_MASK): Likewise.
1146         (OACC_DECLARE_CLAUSE_MASK): Likewise.
1147         (OACC_DATA_CLAUSE_MASK): Likewise.
1148         (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
1149         (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
1150         (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
1151         (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
1152         * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
1153         * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
1155 2018-06-20  Marek Polacek  <polacek@redhat.com>
1157         PR c++/86240
1158         * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
1159         (fold_simple_1): Likewise.
1160         * error.c (dump_expr): Likewise.
1162 2018-06-20  Nathan Sidwell  <nathan@acm.org>
1164         PR c++/85634
1165         * cp-tree.h (lookup_keep): Drop KEEP parm.
1166         (lookup_list_keep): Delete.
1167         (maybe_get_fns): Declare.
1168         * parser.c (cp_parser_primary_expression): Call lookup_keep here.
1169         (cp_parser_template_id): Not here ...
1170         * decl.c (cp_finish_decl): ... nor here ...
1171         * init.c (build_raw_new_expr): ... nor here ...
1172         * pt.c (process_template_parm): ... nor here ...
1173         * semantics.c (perform_koenig_lookup): Call lookup_keep.
1174         (finish_call_expr): Not here.
1175         * tree.c (ovl_cache): Delete.
1176         (ovl_make, ovl_copy): No cache.
1177         (lookup_keep): Always keep.
1178         (lookup_list_keep): Delete.
1179         (maybe_get_fns): New, broken out of ...
1180         (get_fns): ... here.  Call it.
1181         (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
1182         (build_min_nt_call_vec): Likewise.
1184 2018-06-19  Jason Merrill  <jason@redhat.com>
1186         * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
1187         * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
1189         PR c++/86182 - ICE with anonymous union passed to template.
1190         * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
1191         used to declare a named variable.
1193 2018-06-18  Jason Merrill  <jason@redhat.com>
1195         * tree.c (cp_expr_location): New.
1196         * cp-tree.h (cp_expr_loc_or_loc): New.
1197         * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
1198         error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
1199         typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
1201         * parser.c (cp_parser_lambda_expression): Use a range for
1202         LAMBDA_EXPR_LOCATION.
1204         PR c++/86200 - ICE with unexpanded pack in lambda parameter.
1205         * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
1206         function type.
1208         PR c++/81060 - ICE with unexpanded parameter pack.
1209         * pt.c (check_for_bare_parameter_packs): Add loc parameter.
1210         * decl.c (grokdeclarator): Call it for qualifying_scope.
1212         PR c++/86171 - ICE with recursive alias instantiation.
1213         * pt.c (tsubst_decl): Handle recursive alias instantiation.
1215 2018-06-18  Paolo Carlini  <paolo.carlini@oracle.com>
1217         * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
1218         in errors about redefined default arguments; tidy.
1220 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
1222         * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
1223         * cp-gimplify.c (cp_fold): Likewise.
1225 2018-06-15  Jason Merrill  <jason@redhat.com>
1227         PR c++/86147 - wrong capture for template argument.
1228         * expr.c (mark_use): Look through NOP_EXPR.
1230         * name-lookup.c (do_pushtag): Don't look through complete types, but
1231         don't add to them either.  Get context from current_binding_level.
1232         * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
1234         * decl.c (start_enum): Do compare dependent underlying type.
1236         PR c++/82882 - ICE with lambda in template default argument.
1237         * lambda.c (record_null_lambda_scope): New.
1238         * pt.c (tsubst_lambda_expr): Use it.
1239         * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
1240         function that isn't open.
1242         * tree.c (maybe_warn_parm_abi): Inform the location of the class.
1244 2018-06-14  Marek Polacek  <polacek@redhat.com>
1246         PR c++/86063
1247         * decl2.c (cp_check_const_attributes): Skip trees that are not
1248         TREE_LISTs.
1250 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
1252         P0624R2 - Default constructible and assignable stateless lambdas
1253         * method.c (synthesized_method_walk): For C++2a don't mark
1254         sfk_constructor or sfk_copy_assignment as deleted if lambda has
1255         no lambda-captures.
1257 2018-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
1259         * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
1260         OPT_Wshadow warning_at.
1261         (grokfndecl): Consistently use the location_t argument in
1262         literal operator diagnostic messages.
1263         (grokdeclarator): Use declspecs->locations[ds_storage_class]
1264         in error_at call.
1265         * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
1266         in permerror call.
1268 2018-06-13  Jason Merrill  <jason@redhat.com>
1270         PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
1271         * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
1272         constructors.
1274         PR c++/86094 - wrong code with defaulted move ctor.
1275         * class.c (classtype_has_non_deleted_move_ctor): New.
1276         * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
1277         Handle v12 breakage.
1279 2018-06-12  Jason Merrill  <jason@redhat.com>
1281         PR c++/86098 - ICE with template placeholder for TTP.
1282         * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
1283         CLASS_PLACEHOLDER_TEMPLATE.
1285 2018-06-12  Paolo Carlini  <paolo.carlini@oracle.com>
1287         * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
1288         parameter and adjust error_at calls.
1289         * decl.c (grok_op_properties): Adjust calls.
1290         * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
1292 2018-06-12  Marek Polacek  <polacek@redhat.com>
1294         Core issue 1331 - const mismatch with defaulted copy constructor
1295         * class.c (check_bases_and_members): When checking a defaulted
1296         function, mark it as deleted rather than giving an error.
1298 2018-06-11  Jason Merrill  <jason@redhat.com>
1300         PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
1301         * class.c (maybe_warn_about_overly_private_class): Handle inherited
1302         constructors.
1304         PR c++/85963 - -Wunused-but-set with ?: in template.
1305         * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
1307 2018-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
1309         * decl.c (grok_op_properties): Consistently use the location
1310         of the decl; remove special casing of POSTINCREMENT_EXPR and
1311         POSTDECREMENT_EXPR wrt default arguments.
1313 2018-06-05  Jason Merrill  <jason@redhat.com>
1315         * constexpr.c (cxx_eval_binary_expression): Special case comparison
1316         of pointers to members of the same union.
1318 2018-06-11  Jason Merrill  <jason@redhat.com>
1320         PR c++/86094 - wrong code with defaulted move ctor.
1321         * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
1323 2018-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1325         * decl.c (grokfndecl): Use the location_t argument in two more places.
1327 2018-06-06  Marek Polacek  <polacek@redhat.com>
1329         PR c++/85977
1330         * pt.c (unify): If ELTTYPE has no deducible template parms, skip
1331         deduction from the list elements.
1332         (type_unification_real): Check convertibility of list elements.
1334 2018-06-06  Jason Merrill  <jason@redhat.com>
1336         PR c++/86060 - ICE on range for with -std=c++98.
1337         * parser.c (cp_parser_init_statement): Don't clobber *decl after
1338         pedwarn.
1340         PR c++/85710 - ICE with -Wmemset-elt-size.
1341         * semantics.c (finish_call_expr): Call warn_for_memset here.
1342         * parser.c (cp_parser_postfix_expression): Not here.
1343         (literal_integer_zerop): No longer static.
1344         * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
1346 2018-06-05  Marek Polacek  <polacek@redhat.com>
1348         PR c++/85976
1349         * tree.c (cp_tree_equal): Handle USING_DECL.
1351 2018-06-05  Jason Merrill  <jason@redhat.com>
1353         PR c++/85731 - wrong error with qualified-id in template.
1354         * semantics.c (finish_qualified_id_expr): build_qualified_name
1355         for unbound names in the current class.
1357 2018-06-04  Jason Merrill  <jason@redhat.com>
1359         PR c++/61806 - missed SFINAE with partial specialization.
1360         * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
1361         parameter to constructor.
1362         * pt.c (instantiate_class_template_1): Enable access checking
1363         before call to most_specialized_partial_spec.
1365         PR c++/85765 - SFINAE and non-type default template arg.
1366         * pt.c (type_unification_real): Do full semantic processing if
1367         substituting a partial args list replaces all template parms.
1369 2018-06-03  Jason Merrill  <jason@redhat.com>
1371         PR c++/85739 - ICE with pointer to member template parm.
1372         * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
1374 2018-06-02  Jason Merrill  <jason@redhat.com>
1376         PR c++/85761 - ICE with ill-formed use of const outer variable.
1377         * expr.c (mark_use): Handle location wrappers.
1379 2018-06-01  Jason Merrill  <jason@redhat.com>
1381         PR c++/85764 - bogus 'this' not captured error.
1382         * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
1383         (nonlambda_method_basetype): Handle NSDMI.
1385         CWG 1581: When are constexpr member functions defined?
1386         * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
1387         (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
1389         PR c++/58281 - explicit instantiation of constexpr
1390         * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
1392         * pt.c (instantiate_decl): Any defaulted function is defined.
1394 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
1396         PR c++/77777
1397         * call.c (resolve_args): Use location of expression, not current input
1398         location.
1400 2018-05-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
1402         Do not warn about zero-as-null when NULL is used.
1403         * call.c (conversion_null_warnings): Check for pointer
1404         types converted from zero constants.
1405         (convert_like_real): Add a warning sentinel at the end.
1406         * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
1407         check null_node_p.
1409 2018-05-30  Jason Merrill  <jason@redhat.com>
1411         PR c++/85807 - ICE with call in template NSDMI.
1412         * init.c (get_nsdmi): Use push_to/pop_from_top_level.
1413         * tree.c (bot_manip): Don't set_flags_from_callee in a template.
1415         PR c++/85873 - constant initializer_list array not in .rodata.
1416         * tree.c (build_target_expr): Set TREE_READONLY.
1417         * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
1419         * parser.c (cp_parser_check_condition_declarator): Handle
1420         cp_error_declarator.
1422 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
1424         * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
1425         of using it in dead store.
1427 2018-05-29  Jason Merrill  <jason@redhat.com>
1429         PR c++/67445 - returning temporary initializer_list.
1430         PR c++/67711 - assigning from temporary initializer_list.
1431         PR c++/48562 - new initializer_list.
1432         * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
1433         about returning local initializer_list.
1434         * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
1435         * call.c (build_over_call): Warn about assignment from temporary
1436         init_list.
1437         * init.c (build_new_1): Warn about 'new std::initializer_list'.
1438         (find_list_begin, maybe_warn_list_ctor): New.
1439         (perform_member_init): Use maybe_warn_list_ctor.
1441 2018-05-29  Marek Polacek  <polacek@redhat.com>
1443         PR c++/85883
1444         * init.c (build_new): Handle deducing a class with new
1445         with more than one argument.
1447 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
1449         PR c++/85952
1450         * init.c (build_aggr_init): For structured binding initialized from
1451         array call mark_rvalue_use on the initializer.
1453 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1455         * decl2.c (start_static_storage_duration_function): Use
1456         splay_tree_delete_pointers.
1458 2018-05-25  Jason Merrill  <jason@redhat.com>
1460         PR c++/85815 - reference to member of enclosing template.
1461         * search.c (lookup_base): Use currently_open_class.
1462         (lookup_member): Use it regardless of -fconcepts.
1463         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
1465         CWG 616, 1213 - value category of subobject references.
1466         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
1468 2018-05-24  Jason Merrill  <jason@redhat.com>
1470         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
1471         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
1472         generic lambda.
1474 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
1476         Pedwarn on a non-standard position of a C++ attribute.
1477         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
1478         after the namespace name.
1480 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1482         * cp-tree.h (INDIRECT_TYPE_P): New.
1483         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
1484         joust): Use it instead of POINTER_TYPE_P.
1485         * class.c (update_vtable_entry_for_fn, find_flexarrays,
1486         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
1487         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
1488         * cxx_eval_increment_expression, potential_constant_expression_1):
1489         Likewise.
1490         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
1491         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
1492         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
1493         cp_ubsan_maybe_instrument_downcast): Likewise.
1494         * cvt.c (cp_convert_to_pointer, ocp_convert,
1495         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
1496         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
1497         pp_cxx_offsetof_expression_1): Likewise.
1498         * decl.c (grokparms, static_fn_type): Likewise.
1499         * decl2.c (grokbitfield): Likewise.
1500         * error.c (dump_expr): Likewise.
1501         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
1502         * init.c (warn_placement_new_too_small): Likewise.
1503         * lambda.c (build_capture_proxy, add_capture): Likewise.
1504         * parser.c (cp_parser_omp_for_loop): Likewise.
1505         * pt.c (convert_nontype_argument, fn_type_unification,
1506         uses_deducible_template_parms, check_cv_quals_for_unify,
1507         dependent_type_p_r): Likewise.
1508         * search.c (check_final_overrider): Likewise.
1509         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
1510         finish_omp_for): Likewise.
1511         * tree.c (cp_build_qualified_type_real): Likewise.
1512         * typeck.c (build_class_member_access_expr,
1513         finish_class_member_access_expr, build_x_indirect_ref,
1514         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
1515         Likewise.
1517 2018-05-24  Jason Merrill  <jason@redhat.com>
1519         PR c++/85864 - literal template and default template arg.
1520         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
1522 2018-05-24  Marek Polacek  <polacek@redhat.com>
1524         PR c++/85847
1525         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
1526         variable for its result.  Fix a condition.
1527         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
1529 2018-05-23  Jason Merrill  <jason@redhat.com>
1531         Fix cast to rvalue reference from prvalue.
1532         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
1533         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
1534         non-class type.  Handle xvalue argument.
1535         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
1536         rvalue reference.
1537         * semantics.c (finish_compound_literal): Do direct-initialization,
1538         not cast, to initialize a reference.
1540         CWG 616, 1213 - value category of subobject references.
1541         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
1542         an xvalue.
1543         * typeck2.c (build_m_component_ref): Likewise.
1544         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
1545         distinction between temporary and xvalue.
1547 2018-05-23  Marek Polacek  <polacek@redhat.com>
1549         Implement P0614R1, Range-based for statements with initializer.
1550         * parser.c (cp_parser_range_based_for_with_init_p): New.
1551         (cp_parser_init_statement): Use it.  Parse the optional init-statement
1552         for a range-based for loop.
1553         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
1555 2018-05-22  Jason Merrill  <jason@redhat.com>
1557         PR c++/81420 - not extending temporary lifetime.
1558         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
1559         * class.c (build_base_path): Avoid redundant move of an rvalue.
1561         PR c++/85866 - error with .* in default template arg.
1562         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
1564 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
1566         * parser.c (cp_parser_parameter_declaration_list): Remove
1567         bool* parameter.
1568         (cp_parser_parameter_declaration_clause): Adjust.
1569         (cp_parser_cache_defarg): Likewise.
1571 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
1573         PR c++/84588
1574         * parser.c (cp_parser_maybe_commit_to_declaration,
1575         cp_parser_check_condition_declarator): New.
1576         (cp_parser_simple_declaration): Use the first above.
1577         (cp_parser_condition): Use both the above; enforce
1578         [stmt.stmt]/2 about the declarator not specifying
1579         a function or an array; improve error-recovery.
1581 2018-05-20  Jason Merrill  <jason@redhat.com>
1583         PR libstdc++/85843 - warning in logic_error copy constructor.
1584         * class.c (type_has_user_nondefault_constructor): Check for a
1585         user-provided ctor, not user-declared.
1587 2018-05-19  Jason Merrill  <jason@redhat.com>
1589         * pt.c (tsubst_pack_expansion): Sorry rather than abort
1590         on __integer_pack as subexpression of pattern.
1592 2018-05-18  Jason Merrill  <jason@redhat.com>
1594         PR c++/58407 - deprecated implicit copy ops.
1595         * call.c (build_over_call): Warn about deprecated trivial fns.
1596         * class.c (classtype_has_user_copy_or_dtor): New.
1597         (type_build_ctor_call): Check TREE_DEPRECATED.
1598         (type_build_dtor_call): Likewise.
1599         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
1600         Add checks.  Return bool.  Handle -Wdeprecated-copy.
1601         (mark_used): Use it.
1602         * decl.c (grokdeclarator): Remove redundant checks.
1603         * typeck2.c (build_functional_cast): Likewise.
1604         * method.c (lazily_declare_fn): Mark deprecated copy ops.
1605         * init.c (build_aggr_init): Only set TREE_USED if there are
1606         side-effects.
1608 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
1610         PR c++/85782
1611         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
1612         OACC_LOOPs.
1614 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
1616         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
1617         (potential_constant_expression_1): Likewise.
1619 2018-05-16  Marek Polacek  <polacek@redhat.com>
1621         PR c++/85363
1622         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
1623         * tree.c (bot_manip): Call set_flags_from_callee for
1624         AGGR_INIT_EXPRs too.
1626 2018-05-15  Jason Merrill  <jason@redhat.com>
1628         * cp-tree.h (cp_expr): Remove copy constructor.
1629         * mangle.c (struct releasing_vec): Declare copy constructor.
1631         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
1633         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
1634         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
1635         is a throw-expression.
1637 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
1639         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
1640         (FOR_EACH_CLONE): Update.
1641         * decl.c (grokdeclarator): Use it.
1642         * decl2.c (vague_linkage_p): Likewise.
1643         * mangle.c (mangle_decl): Likewise.
1644         * method.c (lazily_declare_fn): Likewise.
1645         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
1646         * repo.c (repo_emit_p): Likewise.
1647         * tree.c (decl_linkage): Likewise.
1649 2018-05-14  Jason Merrill  <jason@redhat.com>
1651         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
1652         * tree.c (build_cp_fntype_variant): New.
1653         (build_ref_qualified_type, build_exception_variant)
1654         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
1655         (cxx_type_hash_eq, cp_check_qualified_type): Check
1656         TYPE_HAS_LATE_RETURN_TYPE.
1657         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
1658         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
1659         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
1660         (adjust_clone_args): Likewise.
1661         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
1662         build_cp_fntype_variant.
1663         (grokdeclarator): Pass late_return_type_p to grokfndecl.
1664         (check_function_type): Use cxx_copy_lang_qualifiers.
1665         (static_fn_type): Use cxx_copy_lang_qualifiers.
1666         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
1667         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
1668         (change_return_type): Use cxx_copy_lang_qualifiers.
1669         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
1670         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
1671         return type on the declarator like a normal trailing return type.
1672         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
1673         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
1674         * typeck.c (merge_types): Use build_cp_fntype_variant.
1676 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
1678         * cp-tree.h (TYPE_REF_P): New.
1679         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
1680         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
1681         direct_reference_binding, reference_binding, implicit_conversion,
1682         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
1683         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
1684         build_over_call, perform_implicit_conversion_flags,
1685         extend_ref_init_temps, type_has_extended_temps): Use it.
1686         * class.c (one_inheriting_sig, check_field_decls,
1687         check_bases_and_members, find_flexarrays, finish_struct,
1688         fixed_type_or_null): Likewise.
1689         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
1690         non_const_var_error, cxx_eval_constant_expression,
1691         potential_constant_expression_1): Likewise.
1692         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
1693         cp_genericize_r, cxx_omp_privatize_by_reference,
1694         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
1695         cp_fold_maybe_rvalue): Likewise.
1696         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
1697         * cvt.c (build_up_reference, convert_to_reference,
1698         convert_from_reference, convert_to_void, noexcept_conv_p,
1699         fnptr_conv_p): Likewise.
1700         * decl.c (poplevel, check_for_uninitialized_const_var,
1701         check_initializer, initialize_local_var, cp_finish_decl,
1702         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
1703         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
1704         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
1705         decl_maybe_constant_var_p): Likewise.
1706         * error.c (dump_type_prefix, dump_expr): Likewise.
1707         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
1708         is_admissible_throw_operand_or_catch_parameter): Likewise.
1709         * expr.c (mark_use): Likewise.
1710         * init.c (build_zero_init_1, build_value_init_noctor,
1711         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
1712         build_new, build_delete): Likewise.
1713         * lambda.c (build_lambda_object): Likewise.
1714         * mangle.c (write_expression, write_template_arg): Likewise.
1715         * method.c (forward_parm, do_build_copy_constructor,
1716         do_build_copy_assign, build_stub_object, constructible_expr,
1717         walk_field_subobs): Likewise.
1718         * parser.c (cp_parser_omp_for_loop_init,
1719         cp_parser_omp_declare_reduction_exprs,
1720         cp_parser_omp_declare_reduction): Likewise.
1721         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
1722         convert_template_argument, tsubst_pack_expansion,
1723         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
1724         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
1725         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
1726         value_dependent_expression_p, build_deduction_guide): Likewise.
1727         * semantics.c (finish_handler_parms, finish_non_static_data_member,
1728         finish_compound_literal, omp_privatize_field,
1729         handle_omp_array_sections_1, handle_omp_array_sections,
1730         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
1731         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
1732         finish_omp_clauses, finish_decltype_type, capture_decltype,
1733         finish_builtin_launder): Likewise.
1734         * tree.c (lvalue_kind, cp_build_reference_type, move,
1735         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
1736         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
1737         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
1738         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
1739         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
1740         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
1741         convert_for_initialization,
1742         maybe_warn_about_returning_address_of_local, check_return_expr,
1743         cp_type_quals, casts_away_constness, non_reference): Likewise.
1744         * typeck2.c (cxx_readonly_error, store_init_value,
1745         process_init_constructor_record, build_x_arrow, build_functional_cast,
1746         add_exception_specifier): Likewise.
1748 2018-05-14  Jason Merrill  <jason@redhat.com>
1750         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
1751         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
1753 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
1755         PR c/85696
1756         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
1757         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
1758         cxx_omp_predetermined_sharing_1.  Rename old function to ...
1759         (cxx_omp_predetermined_sharing_1): ... this.
1760         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
1761         instead of cxx_omp_predetermined_sharing.
1763 2018-05-10  Jason Merrill  <jason@redhat.com>
1765         * decl.c (cp_finish_decl): Don't instantiate auto variable.
1766         (check_static_variable_definition): Allow auto.
1767         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
1769         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
1770         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
1772         Core issue 2310 - conversion to base of incomplete type.
1773         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
1775         CWG 2267 - list-initialization of reference temporary
1776         * call.c (reference_binding): List-initializing a reference
1777         temporary is copy-list-initialization.
1779         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
1781         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
1782         instantiation in template context.
1784         * class.c (vbase_has_user_provided_move_assign): Use
1785         user_provided_p.
1787         * lambda.c (lambda_expr_this_capture): Improve logic.
1789         * decl.c (make_typename_type): s/parameters/arguments/.
1790         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
1791         * pt.c (make_pack_expansion): Correct error message.
1793 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
1795         PR c++/85662
1796         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
1797         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
1798         fold_convert.
1800 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
1802         PR c++/85400
1803         * decl2.c (adjust_var_decl_tls_model): New static function.
1804         (comdat_linkage): Call it on a variable.
1805         (maybe_make_one_only): Likewise.
1807 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
1809         PR c++/85713
1810         Revert:
1811         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1813         PR c++/84588
1814         * parser.c (cp_parser_parameter_declaration_list): When the
1815         entire parameter-declaration-list is erroneous maybe call
1816         abort_fully_implicit_template.
1818 2018-05-08  Jason Merrill  <jason@redhat.com>
1820         PR c++/85706 - class deduction under decltype
1821         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
1822         *walk_subtrees whether or not we walked into the operand.
1823         (type_uses_auto): Only look at deduced contexts.
1825 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1827         PR c++/84588
1828         * parser.c (cp_parser_parameter_declaration_list): When the
1829         entire parameter-declaration-list is erroneous maybe call
1830         abort_fully_implicit_template.
1832 2018-05-08  Marek Polacek  <polacek@redhat.com>
1834         PR c++/85695
1835         * semantics.c (finish_if_stmt_cond): See through typedefs.
1837 2018-05-07  Jason Merrill  <jason@redhat.com>
1839         PR c++/85646 - lambda visibility.
1840         * decl2.c (determine_visibility): Don't mess with template arguments
1841         from the containing scope.
1842         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
1843         thunk.
1845 2018-05-07  Nathan Sidwell  <nathan@acm.org>
1847         Remove fno-for-scope
1848         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
1849         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
1850         (SET_DECL_SHADOWED_FOR_VAR): Delete.
1851         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1852         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
1853         Don't declare.
1854         * name-lookup.h (struct cp_binding_level): Remove
1855         dead_vars_from_for field.
1856         * cp-lang.c (cp_init_ts): Delete.
1857         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
1858         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
1859         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1860         (init_shadowed_var_for_decl): Delete.
1861         * decl.c (poplevel): Remove shadowed for var handling.
1862         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
1863         * name-lookup.c (find_local_binding): Remove shadowed for var
1864         handling.
1865         (check_local_shadow): Likewise.
1866         (check_for_out_of_scope_variable): Delete.
1867         * parser.c (cp_parser_primary_expression): Remove shadowed for var
1868         handling.
1869         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
1870         * semantics.c (begin_for_scope): Always have a scope.
1871         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
1872         (begin_range_for_stmt, finish_id_expression): Likewise.
1874 2018-05-07  Jason Merrill  <jason@redhat.com>
1876         PR c++/85618 - ICE with initialized VLA.
1877         * tree.c (vla_type_p): New.
1878         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
1879         rather than array_of_runtime_bound_p.
1881 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
1883         * cvt.c (ocp_convert): Early handle the special case of a
1884         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
1886 2018-05-03  Jason Merrill  <jason@redhat.com>
1888         PR c++/85600 - virtual delete failure.
1889         * init.c (build_delete): Always save_expr when deleting.
1891 2018-05-03  Nathan Sidwell  <nathan@acm.org>
1893         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
1894         * name-lookup.c (do_pushdecl): Likewise.
1896 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
1897             Jason Merrill  <jason@redhat.com>
1899         PR c++/68374
1900         * name-lookup.c (check_local_shadow): Don't handle static old
1901         declarations in the block handling locals shadowing locals.
1903 2018-05-01  Jason Merrill  <jason@redhat.com>
1905         PR c++/85587 - error with scoped enum in template.
1906         * semantics.c (finish_qualified_id_expr): Don't return an
1907         unqualified IDENTIFIER_NODE.
1909 2018-04-30  Jason Merrill  <jason@redhat.com>
1911         PR c++/85580 - extern "C" and local variables
1912         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
1914         PR c++/84701 - unsigned typeof.
1915         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
1916         of long/short/signed/unsigned.
1918         PR c++/85305 - pack in lambda init-capture.
1919         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
1920         check_for_bare_parameter_packs in a subexpression.
1921         (cp_parser_lambda_introducer): Use it.
1923         PR c++/61982 - dead stores to destroyed objects.
1924         * call.c (build_trivial_dtor_call): New, assigns a clobber.
1925         (build_over_call, build_special_member_call): Use it.
1926         * cp-tree.h: Declare it.
1927         * init.c (build_delete): Remove trivial path.
1929         * init.c (build_dtor_call): Use build_special_member_call.
1930         (build_delete): Remove redundant uses of save_addr.
1932         * decl.c (build_clobber_this): Use build_clobber.
1934 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
1936         PR c++/85553
1937         * init.c (build_zero_init_1): For zero initialization of
1938         NULLPTR_TYPE_P type use build_int_cst directly.
1940 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
1942         PR c++/85515
1943         * name-lookup.c (consider_binding_level): Skip compiler-generated
1944         variables.
1945         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
1946         nested if statements into a series of rejection tests.  Reject
1947         lambda-ignored entities as suggestions.
1949 2018-04-27  Jason Merrill  <jason@redhat.com>
1951         * cvt.c (cp_fold_convert): Use convert_ptrmem.
1952         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
1954 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
1956         PR c++/84691
1957         * decl.c (grokdeclarator): Clear friendp upon definition in local
1958         class definition error.
1960 2018-04-27  Jason Merrill  <jason@redhat.com>
1962         PR c++/85545 - ICE with noexcept PMF conversion.
1963         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
1964         build_ptrmemfunc.
1965         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
1966         adjustment.
1967         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
1969 2018-04-27  Nathan Sidwell  <nathan@acm.org>
1971         * typeck.c (convert_ptrmem): Move local var decls to initialization.
1973         * cp-tree.h (TEMPLATE_INFO): Fix comments.
1974         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
1975         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
1976         (dump, print_other_binding_stacks): Remove declarations.
1977         * name-lookup.c (print_other_binding_stack): Make static.
1978         * pt.c (build_template_decl): Make static.
1980 2018-04-26  Jason Merrill  <jason@redhat.com>
1982         PR c++/85545 - ICE with noexcept PMF conversion.
1983         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
1985 2018-04-25  Nathan Sidwell  <nathan@acm.org>
1987         PR c++/85437
1988         PR c++/49171
1989         * cp-tree.h (REINTERPRET_CAST_P): New.
1990         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
1991         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
1992         for non-trivial PTRMEM_CST cases.
1993         * typeck.c (build_nop_reinterpret): New.
1994         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
1995         NOP_EXPRs returned by cp_convert.
1997 2018-04-23  Jason Merrill  <jason@redhat.com>
1999         PR c++/69560 - wrong alignof(double) on x86.
2000         CWG 1879 - Inadequate definition of alignment requirement.
2001         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
2002         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
2003         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
2004         (cxx_alignof_expr): Pass it.
2005         * parser.c (cp_parser_unary_expression): Pass it.
2006         * pt.c (tsubst_copy): Copy it.
2007         (tsubst_copy_and_build): Pass it.
2008         * decl.c (fold_sizeof_expr): Pass it.
2010 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
2011             Jason Merrill  <jason@redhat.com>
2013         PR c++/85470 - wrong error with static data member.
2014         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
2015         * typeck2.c (store_init_value): Likewise.
2017 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
2019         PR c++/85462
2020         * cp-tree.h (tinst_level): Remove in_system_header_p member,
2021         change refcount member from unsigned char to unsigned short,
2022         add refcount_infinity static data member, adjust comments.
2023         * pt.c (tinst_level::refcount_infinity): Define.
2024         (inc_refcount_use): Remove assert, don't increment if refcount
2025         is already refcount_infinity, adjust comment.
2026         (dec_refcount_use): Remove assert, don't decrement if refcount
2027         is refcount_infinity, adjust comment.
2028         (push_tinst_level_loc): Formatting fix.
2030 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
2032         PR c++/84611
2033         * pt.c (lookup_template_class_1): Check pushtag return value for
2034         error_mark_node.
2036 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
2038         PR c++/80290
2039         * cp-tree.h (tinst_level::free): Fix whitespace.
2041 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
2043         PR c++/84630
2044         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
2045         for error_mark_node.
2047 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
2049         PR c++/84463
2050         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
2051         tricks from here to ...
2052         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
2053         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
2055 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
2057         PR c++/80290
2058         * cp-tree.h (struct tinst_level): Split decl into tldcl and
2059         targs.  Add private split_list_p, tree_list_p, and not_list_p
2060         inline const predicates; to_list private member function
2061         declaration; free public member function declaration; list_p,
2062         get_node and maybe_get_node accessors, and refcount data
2063         member.  Narrow errors to unsigned short.
2064         * error.c (print_instantiation_full_context): Use new
2065         accessors.
2066         (print_instantiation_partial_context_line): Likewise.  Drop
2067         const from tinst_level-typed parameter.
2068         * mangle.c (mangle_decl_string): Likewise.
2069         * pt.c (freelist): New template class.
2070         (tree_list_freelist_head): New var.
2071         (tree_list_freelist): New fn, along with specializations.
2072         (tinst_level_freelist_head): New var.
2073         (pending_template_freelist_head): Likewise.
2074         (tinst_level_freelist, pending_template_freelist): New fns.
2075         (tinst_level::to_list, tinst_level::free): Define.
2076         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
2077         (set_refcount_ptr): New template fn.
2078         (add_pending_template): Adjust for refcounting, freelists and
2079         new accessors.
2080         (neglectable_inst_p): Take a NULL d as a non-DECL.
2081         (limit_bad_template_recursion): Use new accessors.
2082         (push_tinst_level): New overload to create the list.
2083         (push_tinst_level_loc): Make it static, split decl into two
2084         args, adjust tests and initialization to cope with split
2085         lists, use freelist, adjust for refcounting.
2086         (push_tinst_level_loc): New wrapper with the old interface.
2087         (pop_tinst_level): Adjust for refcounting.
2088         (record_last_problematic_instantiation): Likewise.
2089         (reopen_tinst_level): Likewise.  Use new accessors.
2090         (instantiate_alias_template): Adjust for split list.
2091         (fn_type_unification): Likewise.
2092         (get_partial_spec_bindings): Likewise.
2093         (instantiate_pending_templates): Use new accessors.  Adjust
2094         for refcount.  Release pending_template to freelist.
2095         (instantiating_current_function_p): Use new accessors.
2097 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
2099         PR c++/85039
2100         * parser.c (cp_parser_builtin_offset): Reject type definitions.
2101         * mangle.c (nested_anon_class_index): Avoid crash returning -1
2102         if we've seen errors.
2104 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
2106         PR c++/85385
2107         * name-lookup.c (macro_use_before_def::maybe_make): New function,
2108         checking that the use is indeed before the definition.
2109         (macro_use_before_def::macro_use_before_def): Make private.
2110         (macro_use_before_def::~macro_use_before_def): Make private.  Move
2111         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
2112         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
2113         than using new directly.
2115 2018-04-12  Jason Merrill  <jason@redhat.com>
2117         PR c++/85356 - ICE with pointer to member function.
2118         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
2119         flag_noexcept_type.  Build the new spec within the function context.
2120         * except.c (build_noexcept_spec): Do get constant value in templates
2121         if flag_noexcept_type.
2122         * decl.c (check_redeclaration_exception_specification): Don't
2123         instantiate noexcept on a dependent declaration.
2125 2018-04-12  Marek Polacek  <polacek@redhat.com>
2127         PR c++/85258
2128         * constexpr.c (reduced_constant_expression_p): Return false for null
2129         trees.
2131 2018-04-11  Marek Polacek  <polacek@redhat.com>
2133         PR c++/85032
2134         * constexpr.c (potential_constant_expression_1): Consider conversions
2135         from classes to literal types potentially constant.
2137 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
2139         PR c++/70808
2140         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
2141         the type like TYPE_PTR_OR_PTRMEM_P.
2143 2018-04-10  Jason Merrill  <jason@redhat.com>
2145         PR debug/65821 - wrong location for main().
2146         * call.c (clear_location_r, convert_default_arg): Revert.
2147         * tree.c (break_out_target_exprs): Add clear_location parm.
2148         (struct bot_data): New.
2149         (bot_manip): Clear location if requested.
2150         * init.c (get_nsdmi): Pass clear_location.
2152 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
2154         PR c++/85110
2155         * call.c (get_fndecl_argument_location): Make non-static.
2156         * cp-tree.h (get_fndecl_argument_location): New decl.
2157         * typeck.c (convert_for_assignment): When complaining due to
2158         conversions for an argument, show the location of the parameter
2159         within the decl.
2161 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
2163         PR c++/85312 - P0962 cleanup
2164         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
2165         diagnostics.
2167 2018-04-10  Jason Merrill  <jason@redhat.com>
2169         PR debug/65821 - wrong location for main().
2170         * call.c (clear_location_r): New.
2171         (convert_default_arg): Use it.
2172         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
2174         PR c++/85285 - ICE with flexible array after substitution.
2175         * pt.c (instantiate_class_template_1): Check for flexible array in
2176         union.
2178 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
2180         PR c++/85227
2181         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
2182         issue a pedwarn and defer trying to do bindings.
2184 2018-04-09  Jason Merrill  <jason@redhat.com>
2186         PR c++/85279 - dump_expr doesn't understand decltype.
2187         * error.c (dump_expr): Handle DECLTYPE_TYPE.
2189         PR c++/85262 - ICE with redundant qualification on constructor.
2190         * call.c (build_new_method_call_1): Move make_args_non_dependent
2191         after A::A() handling.
2193         PR c++/85277 - ICE with invalid offsetof.
2194         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
2195         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
2197         PR c++/85264 - ICE with excess template-parameter-list.
2198         * parser.c (cp_parser_check_template_parameters): Add template_id_p
2199         parameter.  Don't allow an extra template header if true.
2200         (cp_parser_class_head): Pass template_id_p.
2201         (cp_parser_elaborated_type_specifier): Likewise.
2202         (cp_parser_alias_declaration): Likewise.
2203         (cp_parser_check_declarator_template_parameters): Likewise.
2205 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
2207         PR c++/85194
2208         * parser.c (cp_parser_simple_declaration): For structured bindings,
2209         if *maybe_range_for_decl is NULL after parsing it, set it to
2210         error_mark_node.
2212 2018-04-09  Jason Merrill  <jason@redhat.com>
2214         PR c++/85256 - ICE capturing pointer to VLA.
2215         * lambda.c (add_capture): Distinguish between variable-size and
2216         variably-modified types.
2218 2018-04-06  Jason Merrill  <jason@redhat.com>
2220         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
2221         * pt.c (extract_locals_r): Remember local typedefs.
2223 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
2225         PR c++/84269
2226         * name-lookup.c (struct std_name_hint): Move out of
2227         get_std_name_hint; add field "min_dialect".
2228         (get_std_name_hint): Add min_dialect values to all initializers.
2229         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
2230         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
2231         <shared_mutex>, <string_view>, <thread>, and <variant>.
2232         Add fstream, ifstream, and ofstream to <fstream>.
2233         Add istringstream, ostringstream, and stringstream to <sstream>.
2234         Add basic_string to <string>.
2235         Add tuple_element and tuple_size to <tuple>.
2236         Add declval to <utility>.
2237         Fix ordering of <queue> and <tuple>.
2238         Return a std_name_hint, rather than a const char *.
2239         (get_cxx_dialect_name): New function.
2240         (maybe_suggest_missing_std_header): Detect names that aren't yet
2241         available in the current dialect, and instead of suggesting a
2242         missing #include, warn about the dialect.
2244 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
2246         PR c++/85210
2247         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
2248         errorcount is set if tsubst doesn't return a VAR_DECL.
2250 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
2252         PR c++/85021
2253         * name-lookup.c (using_directives_contain_std_p): New function.
2254         (has_using_namespace_std_directive_p): New function.
2255         (suggest_alternatives_for): Simplify if/else logic using early
2256         returns.  If no candidates were found, and there's a
2257         "using namespace std;" directive, call
2258         maybe_suggest_missing_std_header.
2259         (maybe_suggest_missing_header): Split later part of the function
2260         into..
2261         (maybe_suggest_missing_std_header): New.
2263 2018-04-06  Jason Merrill  <jason@redhat.com>
2265         PR c++/85242 - ICE with class definition in template parm.
2266         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
2267         processing_template_parmlist.
2269         PR c++/85240 - LTO ICE with using of undeduced auto fn.
2270         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
2272 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
2274         PR c++/85209
2275         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
2276         is not prev, if prev == decl.
2278         PR c++/85208
2279         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
2280         maybe_apply_pragma_weak here...
2281         (cp_maybe_mangle_decomp): ... but call it here instead.
2283 2018-04-05  Jason Merrill  <jason@redhat.com>
2285         PR c++/85136 - ICE with designated init in template.
2286         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
2287         designated initializer.
2288         (check_array_designated_initializer): Update ce->index with the
2289         constant value.
2291         PR c++/83808 - ICE with VLA initialization.
2292         * typeck2.c (process_init_constructor_array): Don't require a VLA
2293         initializer to have VLA type.
2295 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
2297         PR c++/80956
2298         * call.c (convert_like_real): Fail gracefully for a broken
2299         std::initializer_list, missing a definition.
2301         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
2303 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
2305         PR c++/84792
2306         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
2307         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
2309 2018-04-05  Jason Merrill  <jason@redhat.com>
2311         PR c++/82152 - ICE with class deduction and inherited ctor.
2312         * pt.c (do_class_deduction): Ignore inherited ctors.
2314         PR c++/84665 - ICE with array of empty class.
2315         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
2317         PR c++/85228 - ICE with lambda in enumerator in template.
2318         * pt.c (bt_instantiate_type_proc): Don't assume
2319         CLASSTYPE_TEMPLATE_INFO is non-null.
2321 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
2323         Implement P0969
2324         * decl.c (find_decomp_class_base): Check accessibility instead
2325         of declared access, adjust diagnostic.
2327 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
2329         Implement P0961
2330         * decl.c (get_tuple_decomp_init): Check the templatedness
2331         of a member get.
2333 2018-04-05  Jason Merrill  <jason@redhat.com>
2335         PR c++/85200 - ICE with constexpr if in generic lambda.
2336         * pt.c (extract_locals_r): Don't record the local specs of variables
2337         declared within the pattern.
2339 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
2341         PR c++/84979
2342         * pt.c (check_auto_in_tmpl_args): New.
2343         (tsubst_qualified_id): Use it to reject template args
2344         referencing auto for non-type templates.
2345         * parser.c (cp_parser_template_id): Likewise.
2346         * cp-tree.h (check_auto_in_tmpl_args): Declare.
2347         * typeck2.c (build_functional_cast): Report correct location
2348         for invalid use of auto.
2350 2018-04-04  Jason Merrill  <jason@redhat.com>
2352         PR c++/85215 - ICE with copy-init from conversion.
2353         * call.c (merge_conversion_sequences): Fix type of direct binding
2354         sequence.
2356         PR c++/84938 - ICE with division by ~-1.
2357         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
2359         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
2360         * parser.c (cp_parser_mem_initializer_list): Call
2361         check_for_bare_parameter_packs.
2363 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
2365         PR inline-asm/85172
2366         * constexpr.c (cxx_eval_builtin_function_call): For calls to
2367         builtin_valid_in_constant_expr_p functions, don't call
2368         cxx_eval_constant_expression if argument is not
2369         potential_constant_expression.
2371         PR c++/85146
2372         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
2373         argument.
2374         * semantics.c (calculate_bases): Add complain argument.  Use
2375         complete_type_or_maybe_complain instead of just complete_type and
2376         return an empty vector if it fails.  Move make_tree_vector () call
2377         after early return.  Formatting fixes.
2378         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
2379         end.
2380         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
2381         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
2382         calculate_direct_bases callers, formatting fixes.
2384 2018-04-04  Jason Merrill  <jason@redhat.com>
2386         PR c++/85006 - -fconcepts ICE with A<auto...> return type
2387         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
2389         PR c++/85200 - ICE with constexpr if in generic lambda.
2390         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
2392         PR c++/84221 - bogus -Wunused with attribute and template.
2393         * decl2.c (is_late_template_attribute): Handle unused and used
2394         normally on non-TYPE_DECL.
2396         PR c++/85135 - ICE with omitted template arguments.
2397         * decl.c (grokdeclarator): Catch deduced class type in trailing
2398         return type.
2400         PR c++/85133 - ICE with missing concept initializer.
2401         * decl.c (cp_finish_decl): If a concept initializer is missing, use
2402         true.
2404         PR c++/85118 - wrong error with generic lambda and std::bind.
2405         * call.c (add_template_conv_candidate): Disable if there are any
2406         call operators.
2408         PR c++/85141 - ICE with compound assignment and static member fn.
2409         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
2410         compound assignment.
2412         PR c++/85148 - ICE with 'this' in array NSDMI.
2413         * tree.c (replace_placeholders_r): Use handled_component_p.
2415 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
2417         PR c++/65923
2418         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
2419         * parser.c (cp_parser_unqualified_id): ..not here.
2421 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
2423         PR c++/84943
2424         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
2425         used.
2426         * decl2.c (mark_used): Return without effects if tf_conv.
2428 2018-04-03  Jason Merrill  <jason@redhat.com>
2430         PR c++/85092 - C++17 ICE with unused list constructor.
2431         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
2432         from a TARGET_EXPR.
2434         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
2435         * constexpr.c (cxx_eval_builtin_function_call): Only defer
2436         __builtin_constant_p if ctx->quiet.
2438 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
2440         PR c++/84768
2441         * pt.c (rewrite_template_parm): If the first argument is
2442         error_mark_node return it immediately.
2443         (build_deduction_guide): Check the return value of the
2444         latter for error_mark_node.
2445         (do_class_deduction): Check the return value of the latter.
2447 2018-04-03  Jason Merrill  <jason@redhat.com>
2449         * semantics.c (finish_if_stmt_cond): Use
2450         instantiation_dependent_expression_p.
2452         PR c++/85149 - generic lambda and constexpr if.
2453         * pt.c (build_extra_args, add_extra_args): Split from
2454         tsubst_pack_expansion.
2455         (tsubst_expr) [IF_STMT]: Use them.
2456         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
2458         * typeck.c (merge_types): Limit matching attribute shortcut to
2459         the default case.
2461 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
2463         PR c++/85147
2464         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
2466         PR c++/85140
2467         * name-lookup.c (handle_namespace_attrs): Return early if attributes
2468         is error_mark_node.
2470         PR c++/85134
2471         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
2472         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
2473         instead for static data members clear init and set DECL_EXTERNAL.
2475 2018-04-02  Jason Merrill  <jason@redhat.com>
2477         PR c++/64095 - auto... parameter pack.
2478         * parser.c (cp_parser_parameter_declaration): Handle turning autos
2479         into packs here.
2480         (cp_parser_parameter_declaration_list): Not here.
2482 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
2484         PR c++/85027
2485         * class.c (instantiate_type): Peel off SAVE_EXPR before
2486         BASELINK.
2488 2018-03-30  Jason Merrill  <jason@redhat.com>
2490         * typeck2.c (process_init_constructor_record): Use
2491         init_list_type_node for the CONSTRUCTOR around an anonymous union
2492         designated initializer.
2494 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
2496         PR c++/84791
2497         * semantics.c (finish_omp_reduction_clause): If
2498         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
2499         even if processing_template_decl.
2501 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
2503         PR c++/84269
2504         * name-lookup.c (get_std_name_hint): Add names from <memory>,
2505         <tuple>, and <utility>.
2507 2018-03-29  Jason Merrill  <jason@redhat.com>
2509         PR c++/85093 - too many template args with pack expansion.
2510         * pt.c (coerce_template_parms): Keep pack expansion args that will
2511         need to be empty.
2513 2018-03-29  Jason Merrill  <jason@redhat.com>
2515         * pt.c (build_non_dependent_expr): Propagate expr location.
2517 2018-03-27  Jason Merrill  <jason@redhat.com>
2519         PR c++/85060 - wrong-code with call to base member in template.
2520         * search.c (any_dependent_bases_p): Check uses_template_parms
2521         rather than processing_template_decl.
2523 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
2525         PR c++/85110
2526         * typeck.c (convert_for_assignment): When complaining due to
2527         conversions for an argument, attempt to use the location of the
2528         argument.
2530 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
2532         PR c++/85028
2533         * pt.c (tsubst_default_argument): Early return if the type of the
2534         parameter is erroneous.
2536 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
2538         PR c++/84973
2539         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
2540         templates.
2542         PR c++/84968
2543         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
2545 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
2547         PR c++/85067
2548         * method.c (defaulted_late_check): Partially revert r253321 changes,
2549         do not early return upon error.
2551 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
2553         PR c++/85077
2554         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
2555         type call fold to generate VECTOR_CSTs when possible.
2557         PR c++/85076
2558         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
2559         return it right away.
2561 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
2563         * search.c (check_final_overrider): Use inform instead of error
2564         for the diagnostics of the overridden functions.  Tweak wording.
2566 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
2568         PR c++/85068
2569         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
2570         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
2572 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
2573             Jason Merrill  <jason@redhat.com>
2575         PR c++/84632
2576         * init.c (build_aggr_init): When initializing from array,
2577         reject anything but CONSTRUCTORs and TARGET_EXPRs.
2578         (build_vec_init): Handle separately ARRAY_TYPEs.
2580 2018-03-26  Jason Merrill  <jason@redhat.com>
2582         PR c++/85062 - ICE with alignas in wrong place.
2583         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
2584         here.
2586         PR c++/85049 - ICE with __integer_pack.
2587         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
2588         * cp-tree.h (TEMPLATE_PARM_P): New.
2590 2018-03-23  Jason Merrill  <jason@redhat.com>
2592         PR c++/78489 - wrong SFINAE behavior.
2594         PR c++/84489
2595         * pt.c (type_unification_real): Don't defer substitution failure.
2597 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
2599         PR c++/85015
2600         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
2601         result.
2603         PR c++/84942
2604         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
2605         cp_build_unary_op call with gcc_unreachable ().
2607 2018-03-23  Marek Polacek  <polacek@redhat.com>
2609         PR c++/85045
2610         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
2611         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
2612         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
2614 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
2616         Implement P0962
2617         * parser.c (cp_parser_perform_range_for_lookup): Change
2618         the condition for deciding whether to use members.
2620 2018-03-23  Marek Polacek  <polacek@redhat.com>
2622         PR c++/85033
2623         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
2625 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
2627         PR c++/71251
2628         * parser.c (cp_parser_alias_declaration): Call
2629         parser_check_template_parameters.
2631         PR c++/84789
2632         * pt.c (resolve_typename_type): Drop assert that stopped
2633         simplification to template-independent types.  Add assert to
2634         verify the initial scope is template dependent.
2635         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
2636         Reparse the id expression as a type-name, not a declarator.
2638         PR c++/84729
2639         * init.c (build_vec_init): Error at parenthesized array init.
2641         PR c++/84610
2642         PR c++/84642
2643         PR c++/84942
2644         * cp-tree.h (temp_override): New template class, generalizing
2645         a cleanup that was only used...
2646         * parser.c (cp_parser_parameter_declaration_clause):
2647         ... here for auto_is_implicit_function_template_parm_p.
2648         (cp_parser_gnu_attributes_opt): Use it here as well.
2649         (cp_parser_std_attribute): Likewise.
2651 2018-03-22  Marek Polacek  <polacek@redhat.com>
2653         PR c++/84854
2654         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
2655         is boolean.
2657 2018-03-21  Jason Merrill  <jason@redhat.com>
2659         PR c++/81311 - wrong C++17 overload resolution.
2660         * call.c (build_user_type_conversion_1): Remove C++17 code.
2661         (conv_binds_ref_to_prvalue): New.
2662         (build_over_call): Handle C++17 copy elision.
2663         (build_special_member_call): Only do C++17 copy elision here if the
2664         argument is already the right type.
2666 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
2668         PR c++/71965
2669         * init.c (build_vec_init): Silence error, former sorry,
2670         without tf_error.
2672         PR c++/84610
2673         PR c++/84642
2674         * parser.c (abort_fully_implicit_template_p): New.
2675         (cp_parser_skip_to_end_of_statement): Use it.
2676         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2677         (finish_fully_implicit_template_p): Clear
2678         implicit_template_parms and implicit_template_scope.
2680 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
2682         PR c++/84972
2683         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
2684         error_mark_node when check_array_designated_initializer fails.
2686 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
2688         PR c++/84961
2689         * cp-tree.h (genericize_compound_lvalue): Declare.
2690         * typeck.c (genericize_compound_lvalue): New function.
2691         (unary_complex_lvalue, cp_build_modify_expr): Use it.
2692         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
2693         and PREDECREMENT_EXPR in output and "m" constrained input operands with
2694         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
2695         COMPOUND_EXPR operand.
2697 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2699         PR c++/85008
2700         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
2701         * decl2.c (vague_linkage_p): Likewise.
2703 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
2705         PR c++/84994
2706         * constexpr.c (constexpr_fn_retval): Make non-"static".
2707         * cp-tree.h (constexpr_fn_retval): New decl.
2708         * search.c (direct_accessor_p): Update leading comment.
2709         (reference_accessor_p): Likewise.
2710         (field_accessor_p): Replace check that function body is a
2711         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
2712         indentation of "field_type" decl.
2714 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2716         PR c++/84804
2717         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
2718         complete classes.
2720 2018-03-21  Martin Sebor  <msebor@redhat.com>
2722         PR c++/84850
2723         * call.c (first_non_public_field): New template and function.
2724         (first_non_trivial_field): New function.
2725         (maybe_warn_class_memaccess): Call them.
2727 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
2729         PR c++/84892
2730         * search.c (field_accessor_p): Use class_of_this_parm rather than
2731         type_of_this_parm, to check that "this" is a "const T *", rather
2732         than a "T *const".
2734 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2736         * class.c (finish_struct_anon_r): Refactor, deprecate anything
2737         other than public non-static data members.
2738         * parser.c (cp_parser_init_declarator): Deprecate attributes after
2739         parenthesized initializer.
2741         PR c++/84836
2742         * name-lookup.c (update_binding): Correct logic for local binding
2743         update.
2745 2018-03-21  Marek Polacek  <polacek@redhat.com>
2747         PR c++/71638, ICE with NSDMI and reference.
2748         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2749         even when we replace an element.
2751 2018-03-20  Marek Polacek  <polacek@redhat.com>
2753         PR c++/84978, ICE with NRVO.
2754         * constexpr.c (cxx_eval_constant_expression): Handle the case when
2755         a RESULT_DECL isn't in the hash map.
2757 2018-03-20  Jason Merrill  <jason@redhat.com>
2759         PR c++/84978, ICE with NRVO.
2760         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
2761         (cp_get_callee_fndecl_nofold): New.
2762         * cp-gimplify.c (cp_genericize_r): Use it instead.
2763         * call.c (check_self_delegation): Likewise.
2765 2018-03-20  Nathan Sidwell  <nathan@acm.org>
2767         PR c++/84962
2768         * name-lookup.c (pushdecl_class_level): Push anon-struct's
2769         member_vec, if there is one.
2771         PR c++/84970
2772         * cp-tree.h (lookup_list_keep): Declare.
2773         * tree.c (lookup_list_keep): New, broken out of ...
2774         (build_min): ... here.  Call it.
2775         * decl.c (cp_finish_decl): Call lookup_list_keep.
2777 2018-03-19  Jason Merrill  <jason@redhat.com>
2779         PR c++/84937 - ICE with class deduction and auto.
2780         * pt.c (rewrite_template_parm): Fix auto handling.
2782 2018-03-19  Marek Polacek  <polacek@redhat.com>
2784         PR c++/84925
2785         * pt.c (enclosing_instantiation_of): Check if fn is null.
2787         PR c++/84927
2788         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2789         as we evaluate the elements.
2790         (cxx_eval_constant_expression): Verify constructor's flags
2791         unconditionally.
2793 2018-03-19  Jason Merrill  <jason@redhat.com>
2795         PR c++/71834 - template-id with too few arguments.
2796         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
2798 2018-03-19  Nathan Sidwell  <nathan@acm.org>
2800         PR c++/84835
2801         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
2802         * pt.c (build_template_decl): Propagate language linkage.
2804         PR c++/84812
2805         * name-lookup.c (set_local_extern_decl_linkage): Defend against
2806         ambiguous lookups.
2808 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2810         PR c/84910
2811         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
2812         diagnostics.
2813         * method.c (synthesize_method): Likewise.
2814         * pt.c (convert_nontype_argument): Likewise.
2816 2018-03-16  Jason Merrill  <jason@redhat.com>
2818         PR c++/84720 - ICE with rvalue ref non-type argument.
2819         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
2820         (convert_nontype_argument): Revert earlier change.
2822         PR c++/80227 - SFINAE and negative array size.
2823         * decl.c (compute_array_index_type): Use
2824         build_converted_constant_expr and valid_constant_size_p.
2826         PR c++/84906 - silent wrong code with ambiguous conversion.
2827         * call.c (build_user_type_conversion_1): Set need_temporary_p on
2828         ambiguous conversion.
2829         (convert_like_real): Check it.
2831         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
2832         * call.c (build_special_member_call): Don't convert an init-list
2833         argument directly to the class type.
2835 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2837         PR c++/79937
2838         PR c++/82410
2839         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
2840         (find_placeholder): Declare.
2841         * tree.c (struct replace_placeholders_t): Add exp member.
2842         (replace_placeholders_r): Don't walk into ctors with
2843         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
2844         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
2845         (replace_placeholders): Initialize data.exp.
2846         (find_placeholders_r, find_placeholders): New functions.
2847         * typeck2.c (process_init_constructor_record,
2848         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
2849         if adding NSDMI on which find_placeholder returns true.
2850         * call.c (build_over_call): Don't call replace_placeholders here.
2851         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
2852         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
2853         TARGET_EXPR_INITIAL.
2854         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
2855         ctor.
2857 2018-03-16  Jason Merrill  <jason@redhat.com>
2859         PR c++/83911 - ICE with multiversioned constructor.
2860         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
2861         dispatchere here.
2862         * call.c (build_over_call): Not here.
2864 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2866         PR c++/84874
2867         * decl.c (reshape_init_class): Don't assert d->cur->index == field
2868         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
2870 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
2872         PR c++/84222
2873         * cp-tree.h (cp_warn_deprecated_use): Declare.
2874         * tree.c (cp_warn_deprecated_use): New function.
2875         * typeck2.c (build_functional_cast): Use it.
2876         * decl.c (grokparms): Likewise.
2877         (grokdeclarator): Likewise.  Temporarily push nested class scope
2878         around grokparms call for out of class member definitions.
2880 2018-03-14  Jason Merrill  <jason@redhat.com>
2882         PR c++/84820 - no error for invalid qualified-id.
2883         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
2884         cp_error_declarator.
2886         PR c++/84801 - ICE with unexpanded pack in lambda.
2887         * pt.c (check_for_bare_parameter_packs): Don't return early for a
2888         lambda in non-template context.
2890         PR c++/81236 - auto variable and auto function
2891         * pt.c (tsubst_baselink): Update the type of the BASELINK after
2892         mark_used.
2894 2018-03-14  Jason Merrill  <jason@redhat.com>
2896         PR c++/83916 - ICE with template template parameters.
2897         * pt.c (convert_template_argument): Don't substitute into type of
2898         non-type parameter if we don't have enough arg levels.
2899         (unify): Likewise.
2901 2018-03-14  Marek Polacek  <polacek@redhat.com>
2903         PR c++/84596
2904         * semantics.c (finish_static_assert): Check
2905         instantiation_dependent_expression_p instead of
2906         {type,value}_dependent_expression_p.
2908 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
2909             Jason Merrill  <jason@redhat.com>
2911         PR c++/82336 - link error with list-init default argument.
2912         * decl.c (check_default_argument): Unshare an initializer list.
2914 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2916         PR c++/84843
2917         * decl.c (duplicate_decls): For redefinition of built-in, use error
2918         and return error_mark_node.  For redeclaration, return error_mark_node
2919         rather than olddecl if !flag_permissive.
2921 2018-03-13  Jason Merrill  <jason@redhat.com>
2923         PR c++/82565 - ICE with concepts and generic lambda.
2924         * pt.c (instantiate_decl): Clear fn_context for lambdas.
2926 2018-03-13  Jason Merrill  <jason@redhat.com>
2928         PR c++/84720 - ICE with rvalue ref non-type argument.
2929         * pt.c (convert_nontype_argument): Handle rvalue references.
2931         PR c++/84839 - ICE with decltype of parameter pack.
2932         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
2933         instantiating dummy parms.
2935         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
2936         parameter even without -Wpedantic.
2938         PR c++/84798 - ICE with auto in abstract function declarator.
2939         * parser.c (cp_parser_parameter_declaration_clause): Check
2940         parser->default_arg_ok_p.
2942 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2944         PR c++/84808
2945         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
2946         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
2947         sizetype.  Formatting fixes.
2949 2018-03-12  Jason Merrill  <jason@redhat.com>
2951         PR c++/84355 - ICE with deduction for member class template.
2952         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
2953         CLASS_PLACEHOLDER_TEMPLATE.
2955         PR c++/84802 - ICE capturing uninstantiated class.
2956         * lambda.c (build_capture_proxy): Call complete_type.
2958 2018-03-09  Jason Merrill  <jason@redhat.com>
2960         PR c++/84770 - ICE with typedef and parameter pack.
2961         * pt.c (verify_unstripped_args_1): Split out from
2962         verify_unstripped_args.
2964         PR c++/84785 - ICE with alias template and default targs.
2965         * pt.c (type_unification_real): Set processing_template_decl if
2966         saw_undeduced == 1.
2968         PR c++/84752 - ICE with capture of constexpr array.
2969         * call.c (standard_conversion): Set rvaluedness_matches_p on the
2970         identity conversion under ck_lvalue.
2972 2018-03-09  Jason Merrill  <jason@redhat.com>
2973             Paolo Carlini  <paolo.carlini@oracle.com>
2975         PR c++/71169
2976         PR c++/71832
2977         * pt.c (any_erroneous_template_args_p): New.
2978         * cp-tree.h (any_erroneous_template_args_p): Declare it.
2979         * parser.c (cp_parser_class_specifier_1): Use it.
2981 2018-03-09  Jason Merrill  <jason@redhat.com>
2983         PR c++/84726 - unnecessary capture of constant vars.
2984         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
2985         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
2986         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
2987         * lambda.c (is_constant_capture_proxy)
2988         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
2989         (prune_lambda_captures): New.
2990         (finish_lambda_function): Call prune_lambda_captures.
2992 2018-03-09  Jason Merrill  <jason@redhat.com>
2993             Jakub Jelinek  <jakub@redhat.com>
2995         PR c++/84076
2996         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
2997         build ADDR_EXPR with REFERENCE_TYPE.
2998         (build_over_call): For purposes of check_function_arguments, if
2999         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
3000         its operand rather than the argument itself.
3002 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
3004         PR c++/84724
3005         * decl.c (duplicate_decls): Don't override __* prefixed builtins
3006         except for __[^b]*_chk, instead issue permerror and for -fpermissive
3007         also a note and return olddecl.
3009 2018-03-09  Nathan Sidwell  <nathan@acm.org>
3011         PR c++/84733
3012         * name-lookup.c (do_pushdecl_with_scope): Only clear
3013         current_function_decl when pushing a non-class (i.e. namespace)
3014         scope.
3016 2018-03-08  Jason Merrill  <jason@redhat.com>
3017             Jakub Jelinek  <jakub@redhat.com>
3019         PR c++/80598
3020         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
3021         not calling mark_used for the benefit of -Wunused-function warning.
3023 2018-03-06  Jason Merrill  <jason@redhat.com>
3025         * lambda.c (is_capture_proxy_with_ref): Remove.
3026         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
3028 2018-03-06  Marek Polacek  <polacek@redhat.com>
3030         PR c++/84684
3031         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
3032         arguments.
3034 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
3036         PR c++/84231
3037         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
3038         only while processing template decls.
3039         * typeck.c (build_x_conditional_expr): Move wrapping of
3040         reference type around type...
3041         * call.c (build_conditional_expr_1): ... here.  Rename
3042         is_lvalue to is_glvalue.
3043         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
3044         INDIRECT_REF of COND_EXPR too.
3046         PR c++/84593
3047         * init.c (build_zero_init_1): Zero-initialize references.
3049         PR c++/84492
3050         * semantics.c (finish_stmt_expr_expr): Reject unresolved
3051         overloads used as stmt expr values.
3053 2018-03-05  Jason Merrill  <jason@redhat.com>
3055         PR c++/84708 - ICE with lambda in local class NSDMI.
3056         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
3057         context.
3059 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
3061         PR c++/84684
3062         * constexpr.c (constexpr_call_hasher::equal): Return false if
3063         lhs->hash != rhs->hash.  Change return 1 to return true and
3064         return 0 to return false.
3066 2018-03-05  Nathan Sidwell  <nathan@acm.org>
3068         PR c++/84702
3069         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
3071 2018-03-05  Marek Polacek  <polacek@redhat.com>
3073         PR c++/84707
3074         * decl.c (duplicate_decls): Check DECL_NAME before accessing
3075         UDLIT_OPER_P.
3077 2018-03-05  Nathan Sidwell  <nathan@acm.org>
3079         PR c++/84694
3080         * friend.c (do_friend): Restore check for identifier_p inside
3081         TEMPLATE_ID_EXPR.
3083 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
3085         PR c++/84618
3086         * parser.c (cp_parser_lambda_introducer): Reject any capture not
3087         involving a VAR_DECL or a PARM_DECL.
3089 2018-03-05  Pádraig Brady  <P@draigBrady.com>
3090             Jason  Merrill  <jason@redhat.com>
3091             Nathan Sidwell  <nathan@acm.org>
3093         PR c++/84497
3094         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
3096 2018-03-03  Jason Merrill  <jason@redhat.com>
3098         PR c++/84686 - missing volatile loads.
3099         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
3101 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3103         PR c++/71464
3104         * optimize.c (maybe_thunk_body): Bail out immediately if either
3105         fns[0] or fns[1] is null.
3107 2018-03-02  Marek Polacek  <polacek@redhat.com>
3109         PR c++/84578
3110         * constexpr.c (get_array_or_vector_nelts): New.
3111         (cxx_eval_array_reference): Use it.
3112         (cxx_eval_vec_init_1): Likewise.
3113         (cxx_eval_store_expression): Likewise.
3115 2018-03-02  Jason Merrill  <jason@redhat.com>
3117         * semantics.c (force_paren_expr): Remove redundant test.
3119 2018-03-02  Marek Polacek  <polacek@redhat.com>
3121         PR c++/84663
3122         * decl.c (cp_complete_array_type): Check error_mark_node.
3124         PR c++/84664
3125         * typeck.c (cp_perform_integral_promotions): Check the result of
3126         mark_rvalue_use.
3128 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
3130         PR c++/84662
3131         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
3132         RETURN instead of return.
3133         <case POINTER_PLUS_EXPR>: Likewise.
3134         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
3135         it instead of wrapping it into CONVERT_EXPR.
3137 2018-03-02  Jason Merrill  <jason@redhat.com>
3139         Fix MIPS16 ICE.
3140         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
3142 2018-03-02  Marek Polacek  <polacek@redhat.com>
3144         PR c++/84590
3145         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
3146         wrapped in VIEW_CONVERT_EXPR.
3148 2018-03-01  Martin Sebor  <msebor@redhat.com>
3150         PR c++/84294
3151         * decl.c (check_redeclaration_no_default_args): Merge attributes
3152         specified on redeclarations of the same function template.
3153         Remove dead code.
3155 2018-03-01  Marek Polacek  <polacek@redhat.com>
3156             Jason Merrill  <jason@redhat.com>
3158         PR c++/84582
3159         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
3160         a template.
3161         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
3162         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
3163         of instantiate_non_dependent_expr.
3164         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
3166 2018-03-01  Nathan Sidwell  <nathan@acm.org>
3168         PR c++/84434
3169         * name-lookup.c (member_vec_dedup): Remove manually peeled
3170         iteration.  Ignore dependent ctor inheritance.
3172 2018-03-01  Jason Merrill  <jason@redhat.com>
3174         PR c++/71569 - decltype of template.
3175         * parser.c (cp_parser_decltype_expr): Handle missing template args.
3177 2018-03-01  Marek Polacek  <polacek@redhat.com>
3179         PR c++/84596
3180         * constexpr.c (require_rvalue_constant_expression): New function.
3181         * cp-tree.h: Declare it.
3182         * semantics.c (finish_static_assert): Use it instead of
3183         require_potential_rvalue_constant_expression.
3185 2018-03-01  Jason Merrill  <jason@redhat.com>
3186             Alexandre Oliva <aoliva@redhat.com>
3188         PR c++/71569 - ICE with redundant args on member variable template.
3189         * decl.c (start_decl): Handle partial specialization of member
3190         variable template.
3191         * pt.c (determine_specialization): Allow partial specialization
3192         of member variable template without specializing enclosing class.
3193         (process_partial_specialization): Improve error message.
3195 2018-02-28  Jason Merrill  <jason@redhat.com>
3197         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
3198         * pt.c (determine_specialization): Check ref-qualifier.
3200 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
3202         PR c++/84609
3203         * parser.c (cp_parser_attributes_opt): Formatting fix.
3204         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
3205         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
3206         New functions.
3207         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
3208         instead of tentative parse to peek over optional attribute tokens
3209         to check for CPP_COLON after them.
3211         PR c++/83871
3212         PR c++/83503
3213         * pt.c (INCLUDE_STRING): Remove define.
3214         (warn_spec_missing_attributes): Use pretty_printer instead of
3215         std::string.  Fix up inform call so that the list of attributes
3216         is in %s argument.
3218 2018-02-28  Martin Sebor  <msebor@redhat.com>
3220         PR testsuite/84617
3221         * decl.c (duplicate_decls): Fully merge attributes const, pure,
3222         and malloc.
3224 2018-02-28  Nathan Sidwell  <nathan@acm.org>
3226         PR c++/84602
3227         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
3228         * name-lookup.c (fields_linear_search): Look in an anon-aggr
3229         regardless of want_type.
3230         (search_anon_aggr): Just use get_class_binding_direct.
3232 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
3234         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
3235         inform_n.
3237 2018-02-27  Martin Sebor  <msebor@redhat.com>
3239         * pt.c: Avoid including <string> directly.
3241 2018-02-27  Martin Sebor  <msebor@redhat.com>
3243         PR c++/83871
3244         PR c++/83503
3245         * cp-tree.h (warn_spec_missing_attributes): New function.
3246         ((check_explicit_specialization): Add an argument.  Call the above
3247         function.
3248         * decl.c (duplicate_decls): Avoid applying primary function template's
3249         attributes to its explicit specializations.
3250         cp/pt.c (warn_spec_missing_attributes): Define.
3252 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
3254         PR c++/71546 - lambda init-capture with qualified-id.
3255         * parser.c (cp_parser_lambda_introducer): Clear scope after
3256         each lambda capture.
3258 2018-02-27  Nathan Sidwell  <nathan@acm.org>
3260         PR c++/84426
3261         * name-lookup.h (get_member_slot): Rename ...
3262         (find_member_slot): ... here.
3263         (add_member_slot): New.
3264         * name-lookup.c (member_vec_linear_search): No need to check for
3265         NULL slot.
3266         (get_member_slot): Rename ...
3267         (find_member_slot): ... here.  Don't add slot for incomplete class.
3268         (add_member_slot): New.
3269         * class.c (add_method): Adjust get_member_slot rename.  Bail out
3270         if push_class_level_binding fails.  Create slot and grok
3271         properties once we're committed to insertion.
3273 2018-02-27  Jason Merrill  <jason@redhat.com>
3275         PR c++/84489 - dependent default template argument
3276         * pt.c (type_unification_real): Handle early substitution failure.
3278 2018-02-26  Jason Merrill  <jason@redhat.com>
3280         PR c++/84560 - ICE capturing multi-dimensional VLA.
3281         * tree.c (array_of_runtime_bound_p): False if the element is
3282         variably-modified.
3284         PR c++/84441 - ICE with base initialized from ?:
3285         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
3287         PR c++/84520 - ICE with generic lambda in NSDMI.
3288         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
3289         'this' in a generic lambda instantiation.
3291         PR c++/84559 - ICE with constexpr VLA.
3292         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
3293         for constexpr variable with VLA type.
3295 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3297         PR c++/84558
3298         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
3299         a valid constant initializer.  Formatting fixes.
3301 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3303         PR c++/84540
3304         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
3305         returning NULL_TREE.
3306         (apply_late_template_attributes): Likewise.
3308 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3310         PR c++/84557
3311         * parser.c (cp_parser_omp_var_list_no_open): Only call
3312         cp_parser_lookup_name_simple on names satisfying identifier_p.
3313         (cp_parser_oacc_routine): Likewise.
3315 2018-02-26  Jason Merrill  <jason@redhat.com>
3317         PR c++/84551 - ICE with concepts and -g.
3318         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
3320 2018-02-26  Marek Polacek  <polacek@redhat.com>
3322         PR c++/84325
3323         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
3324         non-types.
3326 2018-02-26  Jason Merrill  <jason@redhat.com>
3328         PR c++/84447 - ICE with deleted inherited ctor with default arg.
3329         * call.c (build_over_call): Handle deleted functions in one place.
3331 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3333         PR c++/84533
3334         * decl.c (redeclaration_error_message): Don't try to use
3335         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
3337 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3339         * lambda.c (build_capture_proxy): Define static.
3340         * cp-tree.h (build_capture_proxy): Remove.
3342 2018-02-26  Marek Polacek  <polacek@redhat.com>
3344         PR c++/84537
3345         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
3346         if name is error node.
3348 2018-02-25  Jason Merrill  <jason@redhat.com>
3350         PR c++/84015 - ICE with class deduction and auto template parm.
3351         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
3353 2018-02-24  Marek Polacek  <polacek@redhat.com>
3355         PR c++/83692
3356         * constexpr.c (maybe_constant_init_1): New function.
3357         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
3358         (cxx_constant_init): New function.
3359         * cp-tree.h (cxx_constant_init): Declare.
3360         * typeck2.c (store_init_value): Call cxx_constant_init instead of
3361         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
3363 2018-02-22  Jason Merrill  <jason@redhat.com>
3365         PR c++/70468 - ICE with constructor delegation via typedef.
3366         * pt.c (tsubst_initializer_list): Check for other mem-initializers
3367         with constructor delegation.
3369 2018-02-22  Jason Merrill  <jason@redhat.com>
3371         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
3372         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
3373         VECTOR_TYPE.
3375 2018-02-22  Marek Polacek  <polacek@redhat.com>
3377         PR c++/84493
3378         * parser.c (cp_parser_braced_list): Use require_open instead of
3379         consume_open.
3381 2018-02-21  Jason Merrill  <jason@redhat.com>
3383         PR c++/84454 - ICE with pack expansion in signature.
3384         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
3386 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
3388         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
3389         IF_STMT.
3391 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
3393         PR c++/84446
3394         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
3395         on error_mark_node.
3397 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
3399         PR c++/84445
3400         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
3401         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
3403         PR c++/84449
3404         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
3405         returns error_mark_node, return it immediately.
3406         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
3407         error_mark_node, return error_mark_node.
3409         PR c++/84455
3410         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
3411         function_depth to avoid GC during finish_lambda_function.
3413 2018-02-19  Jason Merrill  <jason@redhat.com>
3415         PR c++/84429 - ICE capturing VLA.
3416         * lambda.c (build_capture_proxy): Handle reference refs.
3418 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
3420         PR c++/84448
3421         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
3422         either operand is error_mark_node, set current.lhs to that instead of
3423         creating a binary op with error_mark_node operands.
3425         PR c++/84430
3426         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
3428 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
3430         PR c++/84348
3431         * decl.c (grokdeclarator): Early return error_mark_node upon
3432         ill-formed friend declaration.
3434 2018-02-16  Marek Polacek  <polacek@redhat.com>
3435             Jakub Jelinek  <jakub@redhat.com>
3437         PR c++/84192
3438         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
3439         set *jump_target to anything if jump_target is NULL.
3441 2018-02-16  Jason Merrill  <jason@redhat.com>
3443         PR c++/84151 - unnecessary volatile load with static member.
3444         * call.c (build_new_method_call_1): Avoid loading from a volatile
3445         lvalue used as the object argument for a static member function.
3447         PR c++/81853 - using-directive and constexpr.
3448         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
3450         PR c++/84420 - ICE with structured binding in lambda.
3451         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
3453         PR c++/83835 - C++17 error with constructor ctors.
3454         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
3456         PR c++/82664 - ICE with reference to function template parm.
3457         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
3458         NOP_EXPRs.
3460         PR c++/82764 - C++17 ICE with empty base
3461         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
3463 2018-02-16  Jason Merrill  <jason@redhat.com>
3465         PR c++/84421 - type-dependent if constexpr
3466         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
3468 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3470         Deprecate -ffriend-injection.
3471         * decl.c (cxx_init_decl_processing): Emit warning on option.
3472         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
3473         friend.
3475 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
3477         PR c++/82468
3478         * decl.c (check_special_function_return_type): Reject template
3479         template parameter in deduction guide.
3481 2018-02-16  Nathan Sidwell  <nathan@acm.org>
3483         PR c++/84375
3484         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
3486 2018-02-15  Jason Merrill  <jason@redhat.com>
3488         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
3489         * call.c (convert_like_real): Don't use the copy-list-initialization
3490         shortcut for ck_base.
3492         PR c++/84045 - ICE with typedef and noexcept.
3493         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
3495         PR c++/84376 - ICE with omitted template arguments.
3496         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
3498         PR c++/84368 - wrong error with local variable in variadic lambda.
3499         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
3500         local_specializations.
3502 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
3504         PR c++/84330
3505         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
3506         as first argument.
3508 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
3510         PR c++/84350
3511         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
3512         init, early return.
3514 2018-02-14  Nathan Sidwell  <nathan@acm.org>
3516         * decl2.c (mark_vtable_entries): Set input_location to decl's.
3517         (c_parse_final_cleanups): Restore input_location after emitting
3518         vtables.
3520 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
3522         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
3523         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
3524         auto_deduction_context, tree, int): Add defaults.
3525         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
3526         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
3527         tsubst_flags_t argument.
3528         * init.c (build_new): Likewise.
3530 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
3532         PR c++/84364
3533         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
3534         about return other than *this in assignment operators if
3535         retval is type dependent expression.
3537 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
3539         PR c++/84333
3540         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
3541         save_expr for the G++ extension.
3543 2018-02-13  Jason Merrill  <jason@redhat.com>
3545         PR c++/84080 - ICE with return type deduction and specialization.
3546         * pt.c (determine_specialization): Check uses_template_parms.
3548         Fix more variadic capture issues.
3549         * pt.c (find_parameter_packs_r): Also look at explicit captures.
3550         (check_for_bare_parameter_packs): Check current_class_type for
3551         lambda context.
3552         (extract_locals_r): Handle seeing a full instantiation of a pack.
3553         (tsubst_pack_expansion): Likewise.  Force lambda capture.
3554         * parser.c (cp_parser_lambda_introducer): Don't
3555         check_for_bare_parameter_packs.
3557         PR c++/84338 - wrong variadic sizeof.
3558         * pt.c (argument_pack_select_arg): Like the macro, but look through
3559         a pack expansion.
3560         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
3561         (extract_fnparm_pack): Do make_pack_expansion.
3562         (extract_locals_r): Do strip a pack expansion.
3563         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
3565 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
3567         PR c++/84341
3568         * parser.c (cp_parser_binary_expression): Use build_min instead of
3569         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
3571 2018-02-12  Nathan Sidwell  <nathan@acm.org>
3573         PR c++/84263
3574         * parser.c (cp_parser_decltype): Push and pop
3575         deferring_access_checks.  Reorganize to avoid goto.
3577 2018-02-12  Richard Biener  <rguenther@suse.de>
3579         PR c++/84281
3580         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
3581         uniform constructors and delay allocating them fully.
3583 2018-02-09  Jason Merrill  <jason@redhat.com>
3585         PR c++/84036 - ICE with variadic capture.
3586         Handle variadic capture proxies more like non-variadic.
3587         * lambda.c (build_capture_proxy): Remove workaround.
3588         * pt.c (find_parameter_packs_r): The proxy is a pack.
3589         (instantiate_class_template_1): Remove dead lambda code.
3590         (extract_fnparm_pack): Don't make_pack_expansion.
3591         (extract_locals_r): Don't strip a pack expansion.
3592         (tsubst_pack_expansion): Handle proxy packs.  Use
3593         PACK_EXPANSION_EXTRA_ARGS less.
3594         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
3595         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
3596         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
3597         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
3598         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
3600 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
3602         PR sanitizer/83987
3603         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
3605 2018-02-09  Jason Merrill  <jason@redhat.com>
3607         PR c++/81917 - ICE with void_t and partial specialization.
3608         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
3609         calling most_specialized_partial_spec.
3611 2018-02-09  Nathan Sidwell  <nathan@acm.org>
3613         PR c/84293
3614         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
3615         Pass expr location to strict_aliasing_warning.
3617 2018-02-09  Jason Merrill  <jason@redhat.com>
3619         PR c++/84296 - ICE with qualified-id in template.
3620         PR c++/83714
3621         * pt.c (unknown_base_ref_p): New.
3622         (instantiation_dependent_scope_ref_p): Use it instead of
3623         any_dependent_bases_p.
3625 2018-02-09  Marek Polacek  <polacek@redhat.com>
3626             Jakub Jelinek  <jakub@redhat.com>
3628         PR c++/83659
3629         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
3630         fold_indirect_ref_1, including poly_*int64.  Verify first that
3631         tree_fits_poly_int64_p (op01).  Formatting fixes.
3633 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3635         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
3636         * lambda.c (build_capture_proxy): Likewise.
3637         * search.c (field_access_p): Likewise.
3638         * semantics.c (omp_clause_decl, omp_privatize_field,
3639         finish_omp_clauses): Likewise.
3641 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3643         PR c++/83806
3644         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
3645         case of nullptr too.
3647 2018-02-08  Nathan Sidwell  <nathan@acm.org>
3649         * class.c (finish_struct): Fix std:initializer_list diagnostic
3650         formatting.
3652 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3654         PR c++/83204
3655         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
3657 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
3659         PR c++/84082
3660         * parser.c (cp_parser_dot_deref_incomplete): New function.
3661         (cp_parser_postfix_dot_deref_expression): Use it.
3663 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
3665         PR c++/81610
3666         PR c++/80567
3667         * name-lookup.c (suggest_rid_p): New function.
3668         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
3669         suggest_rid_p.
3671 2018-02-07  Jason Merrill  <jason@redhat.com>
3673         PR c++/84182 - ICE with captured lambda
3674         PR c++/84181
3675         * pt.c (extract_locals_r, extract_local_specs): New.
3676         (tsubst_pack_expansion): Use them.
3678 2018-02-07  Martin Liska  <mliska@suse.cz>
3680         PR c++/84059.
3681         * class.c (add_method): Append argument value.
3682         * cp-tree.h (maybe_version_functions): Add new argument.
3683         * decl.c (decls_match): Call it if a declaration does not
3684         have DECL_FUNCTION_VERSIONED.
3685         (maybe_version_functions): record argument is added.
3687 2018-02-05  Marek Polacek  <polacek@redhat.com>
3689         * class.c: Remove unused global variables.
3690         (build_primary_vtable): Don't gather statistics.
3691         (print_class_statistics): Remove.
3692         * cp-tree.h (print_class_statistics): Remove.
3693         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
3695 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
3697         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
3698         * constexpr.c (cx_check_missing_mem_inits): Likewise.
3699         * decl.c (next_initializable_field, find_decomp_class_base,
3700         cp_finish_decomp): Likewise.
3701         * typeck2.c (process_init_constructor_record): Likewise.
3703 2018-02-02  Jason Merrill  <jason@redhat.com>
3705         PR c++/84181 - ICE with lambda parm in template argument.
3706         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
3708 2018-02-01  Jason Merrill  <jason@redhat.com>
3710         PR c++/84160 - ICE with nested variadic capture.
3711         * lambda.c (is_capture_proxy_with_ref): New.
3712         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
3713         COMPONENT_REF.
3714         * expr.c (mark_use): Use is_capture_proxy_with_ref.
3715         * constexpr.c (potential_constant_expression_1): Likewise.
3716         * semantics.c (process_outer_var_ref): Likewise.
3718 2018-02-01  Marek Polacek  <polacek@redhat.com>
3720         PR c++/84125
3721         * typeck.c (build_address): Relax the assert when
3722         processing_template_decl.
3724 2018-02-01  Jason Merrill  <jason@redhat.com>
3726         PR c++/84126 - ICE with variadic generic lambda
3727         PR c++/84036
3728         PR c++/82249
3729         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
3730         PACK_EXPANSION_EXTRA_ARGS.
3732 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
3734         PR c++/83796
3735         * call.c (convert_like_real): If w're initializing from {} explicitly
3736         call abstract_virtuals_error_sfinae.
3738 2018-01-31  Jason Merrill  <jason@redhat.com>
3739             Jakub Jelinek  <jakub@redhat.com>
3741         PR c++/83993
3742         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
3743         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
3744         on ADDR_EXPR.
3746 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
3748         PR c++/83993
3749         * constexpr.c (diag_array_subscript): Emit different diagnostics
3750         if TYPE_DOMAIN (arraytype) is NULL.
3751         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
3752         with NULL TYPE_DOMAIN use size_zero_node as nelts.
3754 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
3756         PR c++/84092
3757         * semantics.c (finish_qualified_id_expr): When handling an
3758         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
3760 2018-01-31  Marek Polacek  <polacek@redhat.com>
3762         PR c++/84138
3763         * cp-gimplify.c (cp_fold): Check if X is an error node before
3764         calling useless_type_conversion_p.
3766 2018-01-30  Jason Merrill  <jason@redhat.com>
3768         PR c++/84091 - ICE with local class in lambda in template.
3769         * decl2.c (determine_visibility): Look for outer containing template
3770         instantiation.
3772         PR c++/84098 - ICE with lambda in template NSDMI.
3773         * pt.c (instantiate_class_template_1): Ignore more lambdas.
3775 2018-01-29  Jason Merrill  <jason@redhat.com>
3777         PR c++/68810 - wrong location for reinterpret_cast error.
3778         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
3779         !dofold.
3781 2018-01-29  Marek Polacek  <polacek@redhat.com>
3783         PR c++/83996
3784         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
3785         => fooarray[1] in offset_int.
3787 2018-01-29  Jason Merrill  <jason@redhat.com>
3789         PR c++/83942 - wrong unused warning with static_cast.
3790         * cvt.c (ocp_convert): Call mark_rvalue_use.
3792 2018-01-26  Jason Merrill  <jason@redhat.com>
3794         PR c++/83956 - wrong dtor error with anonymous union
3795         * method.c (walk_field_subobs): Variant members only affect
3796         deletedness.
3797         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
3799         PR c++/84036 - ICE with variadic capture.
3800         PR c++/82249
3801         * pt.c (tsubst_pack_expansion): When optimizing a simple
3802         substitution, pull a single pack expansion out of its pack.
3804         PR c++/82514 - ICE with local class in generic lambda.
3805         * pt.c (regenerated_lambda_fn_p): Remove.
3806         (enclosing_instantiation_of): Don't use it.
3807         (tsubst_function_decl): Call enclosing_instantiation_of.
3809         * pt.c (lookup_template_class_1): Add sanity check.
3810         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
3812 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
3814         PR c++/84031
3815         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
3816         recursive calls that return ret.
3817         (cp_finish_decomp): Ignore unnamed bitfields.
3819 2018-01-23  Jason Merrill  <jason@redhat.com>
3821         PR c++/82249 - wrong mismatched pack length error.
3822         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
3823         unsubstituted function parameter pack.
3825 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
3827         PR c++/83921
3828         * decl.c (check_for_uninitialized_const_var): Not static; add
3829         bool and tsubst_flags_t parameters; adjust to be used both in
3830         constexpr context and not.
3831         * constexpr.c (potential_constant_expression_1): Use the above.
3832         * cp-tree.h (check_for_uninitialized_const_var): Declare.
3834 2018-01-23  Jason Merrill  <jason@redhat.com>
3836         PR c++/83947 - ICE with auto declarations.
3837         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
3838         * decl.c (undeduced_auto_decl): Limit to vars and fns.
3840 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
3842         PR c++/83974
3843         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
3844         for pointer to member function types.
3846 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
3848         PR sanitizer/83987
3849         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
3850         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
3852 2018-01-23  Nathan Sidwell  <nathan@acm.org>
3854         PR c++/83988
3855         * pt.c (tsubst_baselink): Remove optype assert.
3856         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
3858 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
3860         PR c++/83958
3861         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
3862         refers to incomplete type.
3864 2018-01-23  Nathan Sidwell  <nathan@acm.org>
3866         Deprecate ARM-era for scope handling
3867         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
3868         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
3869         cleared.
3870         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
3871         cleanup handling.
3872         * semantics.c (begin_for_scope): Flag_new_for_scope is
3873         boolean-like.
3874         (finish_for_stmt, begin_range_for_stmt): Likewise.
3876 2018-01-22  Jason Merrill  <jason@redhat.com>
3878         PR c++/83720
3879         * decl2.c (determine_visibility): Fix template_decl handling
3880         instead of blocking it.
3882         PR c++/83720 - ICE with lambda and LTO.
3883         * decl2.c (determine_visibility): Clear template_decl for
3884         function-scope decls.  Propagate anonymous linkage from containing
3885         function.
3887 2018-01-22  Marek Polacek  <polacek@redhat.com>
3889         PR c++/81933
3890         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
3891         split out anything.
3893 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
3895         PR c++/83895
3896         * decl.c (grokdeclarator): Don't diagnose extra parens
3897         on typedefs.
3899 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
3901         PR c++/81167
3902         * call.c (joust): Use TREE_TYPE (source) if source is
3903         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
3905         PR c++/83919
3906         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
3907         for direct enum init.
3908         * decl.c (reshape_init): Likewise.
3910 2018-01-19  Marek Polacek  <polacek@redhat.com>
3912         * constexpr.c (fold_simple): Simplify.
3914 2018-01-18  Jason Merrill  <jason@redhat.com>
3916         PR c++/83714
3917         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
3918         * pt.c (instantiation_dependent_scope_ref_p): True if
3919         any_dependent_bases_p.
3921 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
3923         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
3924         vs DECL_NONTRIVIALLY_INITIALIZED_P).
3926 2018-01-18  Jason Merrill  <jason@redhat.com>
3928         PR c++/82461 - constexpr list-initialized member
3929         * constexpr.c (potential_constant_expression_1): Check
3930         TARGET_EXPR_DIRECT_INIT_P.
3932 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
3934         PR c++/81013
3935         * decl.c (xref_basetypes): Early return upon error about derived
3936         union.
3938 2018-01-18  Nathan Sidwell  <nathan@acm.org>
3940         PR c++/83160
3941         * cp-tree.h (mark_use): Declare.
3942         * expr.c (mark_use): Make extern.
3943         * call.c (direct_reference_binding): Set inner conv's
3944         rvaluedness_matches_p, if it is an identity.
3945         (convert_like_real): Mark lvalue or rvalue use for identity as
3946         rvaledness_matches_p demands.
3948 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
3950         PR c++/83824
3951         * parser.c (attr_chainon): New function.
3952         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
3953         cp_parser_namespace_definition, cp_parser_init_declarator,
3954         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
3955         cp_parser_gnu_attributes_opt): Use it.
3956         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
3957         cp_parser_objc_struct_declaration): Likewise.  Don't reset
3958         prefix_attributes if attributes is error_mark_node.
3960 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
3962         PR c++/78344
3963         * decl.c (grokdeclarator): Do not append the error_mark_node
3964         due to an erroneous optional attribute-specifier-seq.
3966 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
3968         PR c++/83897
3969         * cp-gimplify.c (cp_maybe_instrument_return): Handle
3970         CLEANUP_POINT_EXPR.
3972 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
3974         PR c++/81054
3975         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
3976         error_mark_node when we give an error.
3977         * decl.c (cp_finish_decl): Use the latter.
3979 2018-01-17  Nathan Sidwell  <nathan@acm.org>
3981         PR c++/83287
3982         * init.c (build_raw_new_expr): Scan list for lookups to keep.
3984 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
3986         PR c++/83814
3987         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
3988         the C++ part.  If processing a template, call
3989         fold_non_dependent_expr rather than fully folding.
3991 2018-01-17  Jason Merrill  <jason@redhat.com>
3993         PR c++/81067 - redundant NULL warning.
3994         * call.c (convert_like_real): Restore null_node handling.
3996 2018-01-17  Jason Merrill  <jason@redhat.com>
3998         PR c++/81843 - ICE with variadic member template.
3999         PR c++/72801
4000         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
4001         template args.
4003 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
4005         PR c++/83799
4006         * pt.c (type_dependent_expression_p): Strip any location wrapper
4007         before testing tree codes.
4008         (selftest::test_type_dependent_expression_p): New function.
4009         (selftest::cp_pt_c_tests): Call it.
4011 2018-01-17  Nathan Sidwell  <nathan@acm.org>
4013         PR c++/83739
4014         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
4015         this not a final instantiation.
4017 2018-01-16  Jason Merrill  <jason@redhat.com>
4019         PR c++/83714 - ICE checking return in template.
4020         * typeck.c (check_return_expr): Call build_non_dependent_expr.
4022 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
4024         PR c++/83817
4025         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
4026         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
4027         instead of CALL_FROM_THUNK_P.
4029         PR c++/83825
4030         * name-lookup.c (member_vec_dedup): Return early if len is 0.
4031         (resort_type_member_vec, set_class_bindings,
4032         insert_late_enum_def_bindings): Use vec qsort method instead of
4033         calling qsort directly.
4035 2018-01-15  Martin Sebor  <msebor@redhat.com>
4037         PR c++/83588
4038         * class.c (find_flexarrays): Make a record of multiple flexible array
4039         members.
4041 2018-01-12  Jason Merrill  <jason@redhat.com>
4043         PR c++/83186 - ICE with static_cast of list-initialized temporary.
4044         * typeck.c (build_static_cast): Use build_non_dependent_expr.
4046 2018-01-12  Nathan Sidwell  <nathan@acm.org>
4048         * cp-tree.h (mark_rvalue_use): Add parm name.
4049         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
4050         mark_rvalue_use.
4051         * call.c (convert_like_real): Fix formatting.
4053 2018-01-11  Jason Merrill  <jason@redhat.com>
4055         PR c++/82728 - wrong -Wunused-but-set-variable
4056         PR c++/82799
4057         PR c++/83690
4058         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
4059         * decl.c (case_conversion): Likewise.
4060         * semantics.c (finish_static_assert): Call
4061         perform_implicit_conversion_flags.
4063 2018-01-11  Nathan Sidwell  <nathan@acm.org>
4065         * method.c (enum mangling_flags): Delete long-dead enum.
4067 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
4069         * parser.c (cp_parser_std_attribute_spec): When
4070         token_pair::require_open / require_close return false simply
4071         return error_mark_node, avoid duplicate cp_parser_error about
4072         expected '(' / ')', respectively.
4074 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
4076         PR c++/43486
4077         * call.c (null_ptr_cst_p): Strip location wrappers when
4078         converting from '0' to a pointer type in C++11 onwards.
4079         (conversion_null_warnings): Replace comparison with null_node with
4080         call to null_node_p.
4081         (build_over_call): Likewise.
4082         * cp-gimplify.c (cp_fold): Remove the early bailout when
4083         processing_template_decl.
4084         * cp-lang.c (selftest::run_cp_tests): Call
4085         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
4086         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
4087         (selftest::run_cp_tests): Move decl to bottom of file.
4088         (null_node_p): New inline function.
4089         (selftest::cp_pt_c_tests): New decl.
4090         (selftest::cp_tree_c_tests): New decl.
4091         * cvt.c (build_expr_type_conversion): Replace comparison with
4092         null_node with call to null_node_p.
4093         * error.c (args_to_string): Likewise.
4094         * except.c (build_throw): Likewise.
4095         * mangle.c (write_expression): Skip location wrapper nodes.
4096         * parser.c (literal_integer_zerop): New function.
4097         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
4098         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
4099         param of cp_parser_parenthesized_expression_list.  When calling
4100         warn_for_memset, replace integer_zerop calls with
4101         literal_integer_zerop, eliminating the double logical negation
4102         cast to bool.  Eliminate the special-casing for CONST_DECL in
4103         favor of the fold_for_warn within warn_for_memset.
4104         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
4105         param, defaulting to false.  Convert "expr" to a cp_expr, and call
4106         maybe_add_location_wrapper on it when wrap_locations_p is true.
4107         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
4108         the result for RID_ALIGNOF and RID_SIZEOF.
4109         (cp_parser_builtin_offsetof): Likewise.
4110         * pt.c: Include "selftest.h".
4111         (tsubst_copy): Handle location wrappers.
4112         (tsubst_copy_and_build): Likewise.
4113         (build_non_dependent_expr): Likewise.
4114         (selftest::test_build_non_dependent_expr): New function.
4115         (selftest::cp_pt_c_tests): New function.
4116         * tree.c: Include "selftest.h".
4117         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
4118         (selftest::test_lvalue_kind): New function.
4119         (selftest::cp_tree_c_tests): New function.
4120         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
4121         (cp_build_binary_op): Replace comparison with null_node with call
4122         to null_node_p.
4123         (build_address): Use location of operand when building address
4124         expression.
4126 2018-01-10  Marek Polacek  <polacek@redhat.com>
4128         PR c++/82541
4129         * call.c (build_conditional_expr_1): Check complain before warning.
4130         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
4131         -Wduplicated-branches.
4133 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
4135         PR c++/81327
4136         * call.c (maybe_warn_class_memaccess): Add forward declaration.
4137         Change last argument from tree * to const vec<tree, va_gc> *, adjust
4138         args uses and check number of operands too.  Don't strip away any
4139         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
4140         Deal with src argument not having pointer type.  Check
4141         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
4142         test.
4143         (build_over_call): Call maybe_warn_class_memaccess here on the
4144         original arguments.
4145         (build_cxx_call): Rather than here on converted arguments.
4147 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
4149         PR c++/81055
4150         * init.c (build_vec_init): Avoid building an INIT_EXPR with
4151         error_mark_node as second argument.
4153 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
4155         PR c++/83734
4156         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
4157         in STATEMENT_LIST.  Remove unneeded assert.
4159 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
4160             Alan Hayward  <alan.hayward@arm.com>
4161             David Sherwood  <david.sherwood@arm.com>
4163         * constexpr.c (cxx_eval_array_reference): Handle polynomial
4164         VECTOR_CST_NELTS.
4165         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
4166         * call.c (build_conditional_expr_1): Likewise.
4167         * decl.c (cp_finish_decomp): Likewise.
4168         * mangle.c (write_type): Likewise.
4169         * typeck.c (structural_comptypes): Likewise.
4170         (cp_build_binary_op): Likewise.
4171         * typeck2.c (process_init_constructor_array): Likewise.
4173 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
4175         PR c++/83555
4176         * typeck.c (build_static_cast_1): For static casts to reference types,
4177         call build_base_path with flag_delete_null_pointer_checks as nonnull
4178         instead of always false.  When -fsanitize=null, call
4179         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
4180         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
4181         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
4183 2018-01-03  Nathan Sidwell  <nathan@acm.org>
4185         PR c++/83667
4186         * method.c (make_alias_for): Copy DECL_CONTEXT.
4188 2018-01-03  Marek Polacek  <polacek@redhat.com>
4190         PR c++/83592
4191         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
4193 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
4195         PR preprocessor/83602
4196         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
4197         for builtin macros.
4199         PR c++/83634
4200         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
4201         error_mark_node, return error_mark_node.
4203         Update copyright years.
4205 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
4207         PR c++/83556
4208         * tree.c (replace_placeholders_r): Pass NULL as last argument to
4209         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
4210         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
4211         to false and return.
4212         (replace_placeholders): Pass NULL instead of &pset as last argument
4213         to cp_walk_tree.
4215 2018-01-02  Nathan Sidwell  <nathan@acm.org>
4217         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
4218         lval var.
4220 Copyright (C) 2018 Free Software Foundation, Inc.
4222 Copying and distribution of this file, with or without modification,
4223 are permitted in any medium without royalty provided the copyright
4224 notice and this notice are preserved.