C++: -Wwrite-strings: use location of string constant
[official-gcc.git] / gcc / cp / ChangeLog
blobd8be93089b4c6e555d5acad45f84d4b795c51e2a
1 2018-08-17  David Malcolm  <dmalcolm@redhat.com>
3         * typeck.c (string_conv_p): Extract location from EXP and use it
4         in preference to input_location when issuing warnings.
6 2018-08-15  David Malcolm  <dmalcolm@redhat.com>
8         * call.c: Include "gcc-rich-location.h".
9         (convert_like_real): Add range label for "invalid conversion"
10         diagnostic.
11         (perform_implicit_conversion_flags): Add type label to the
12         "could not convert" error.
13         * error.c: Include "gcc-rich-location.h".
14         (range_label_for_type_mismatch::get_text): New function.
15         * typeck.c (convert_for_assignment): Add type label to
16         the "cannot convert" error if a location is available.
18 2018-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
20         * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
21         emit an error instead of a permerror.
23 2018-08-13  Marek Polacek  <polacek@redhat.com>
25         PR c++/57891
26         * call.c (struct conversion): Add check_narrowing_const_only.
27         (build_converted_constant_expr): Set check_narrowing and
28         check_narrowing_const_only.  Give error if expr is error node.
29         (convert_like_real): Pass it to check_narrowing.
30         * cp-tree.h (check_narrowing): Add a default parameter.
31         * decl.c (compute_array_index_type): Use input_location instead of
32         location_of.
33         * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
34         * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
35         expressions.  Call maybe_constant_value instead of
36         fold_non_dependent_expr.  Don't mention { } in diagnostic.  Only check
37         narrowing for constants if CONST_ONLY.
39 2018-08-13  Martin Sebor  <msebor@redhat.com>
41         PR tree-optimization/71625
42         * decl.c (check_initializer):  Call braced_list_to_string.
43         (eval_check_narrowing): New function.
44         * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
45         as initilizers for all narrow character types.
47 2018-08-13  Marek Polacek  <polacek@redhat.com>
49         P0806R2 - Deprecate implicit capture of this via [=]
50         * lambda.c (add_default_capture): Formatting fixes.  Warn about
51         deprecated implicit capture of this via [=].
53         PR c++/86915
54         * decl.c (create_array_type_for_decl): Handle null name.
56 2018-08-10  Jason Merrill  <jason@redhat.com>
58         PR c++/86728 - C variadic generic lambda.
59         * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
60         a pack if it's followed by a declarator-id.
62 2018-08-08  Jakub Jelinek  <jakub@redhat.com>
64         P0595R1 - is_constant_evaluated
65         * cp-tree.h (enum cp_built_in_function): New.
66         (maybe_constant_init): Add pretend_const_required argument.
67         * typeck2.c (store_init_value): Pass true as new argument to
68         maybe_constant_init.
69         * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
70         for BUILT_IN_UNREACHABLE.
71         (struct constexpr_ctx): Add pretend_const_required field.
72         (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
73         macro.  Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED.  Check also
74         DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
75         (cxx_eval_outermost_constant_expr): Add pretend_const_required
76         argument, initialize pretend_const_required field in ctx.  If the
77         result is TREE_CONSTANT and non_constant_p, retry with
78         pretend_const_required false if it was true.
79         (is_sub_constant_expr): Initialize pretend_const_required_field in
80         ctx.
81         (cxx_constant_value): Pass true as pretend_const_required to
82         cxx_eval_outermost_constant_expr.
83         (maybe_constant_value): Pass false as pretend_const_required to
84         cxx_eval_outermost_constant_expr.
85         (fold_non_dependent_expr): Likewise.
86         (maybe_constant_init_1): Add pretend_const_required argument, pass it
87         down to cxx_eval_outermost_constant_expr.  Pass !allow_non_constant
88         instead of false as strict to cxx_eval_outermost_constant_expr.
89         (maybe_constant_init): Add pretend_const_required argument, pass it
90         down to maybe_constant_init_1.
91         (cxx_constant_init): Pass true as pretend_const_required to
92         maybe_constant_init_1.
93         * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
94         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
95         (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
96         * decl.c: Include langhooks.h.
97         (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
98         built-in.
99         * tree.c (builtin_valid_in_constant_expr_p): Return true for
100         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
101         * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
103         PR c++/86836
104         * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
105         before tsubst_init, not after it.
107         PR c++/86738
108         * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
109         NULL pointer set *non_constant_p to true.
110         (cxx_eval_component_reference): For dereferencing of a NULL pointer,
111         set *non_constant_p to true and return t.
113 2018-08-07  Paolo Carlini  <paolo.carlini@oracle.com>
115         PR c++/59480, DR 136
116         * decl.c (check_no_redeclaration_friend_default_args): New.
117         (duplicate_decls): Use the latter; also check that a friend
118         declaration specifying default arguments is a definition.
120 2018-08-07  Ville Voutilainen  <ville.voutilainen@gmail.com>
122         PR c++/79133
123         * name-lookup.c (check_local_shadow): Reject captures and parameters
124         with the same name.
126 2018-08-06  Marek Polacek  <polacek@redhat.com>
128         PR c++/86767
129         * constexpr.c (cxx_eval_statement_list): Handle continue.
131 2018-08-03  David Malcolm  <dmalcolm@redhat.com>
132             Jonathan Wakely  <jwakely@redhat.com>
134         * decl.c: Include "gcc-rich-location.h".
135         (add_return_star_this_fixit): New function.
136         (finish_function): When warning about missing return statements in
137         functions returning non-void, add a "return *this;" fix-it hint for
138         assignment operators.
140 2018-08-03  Jason Merrill  <jason@redhat.com>
142         PR c++/86706
143         * class.c (build_base_path): Use currently_open_class.
145 2018-08-02  David Malcolm  <dmalcolm@redhat.com>
147         * error.c (cxx_print_error_function): Duplicate "file" before
148         passing it to pp_set_prefix.
149         (cp_print_error_function): Use pp_take_prefix when saving the
150         existing prefix.
152 2018-08-02  Richard Biener  <rguenther@suse.de>
154         PR c++/86763
155         * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
156         to the CLASSTYPE_AS_BASE.
158 2018-08-01  Martin Sebor  <msebor@redhat.com>
160         PR tree-optimization/86650
161         * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
162         TREE_BLOCK (t) from within percent_K_format to this callsite.
164 2018-08-01  Paolo Carlini  <paolo.carlini@oracle.com>
166         PR c++/86661
167         * class.c (note_name_declared_in_class): Use location_of in permerror
168         instead of DECL_SOURCE_LOCATION (for OVERLOADs).
170 2018-07-31  Tom de Vries  <tdevries@suse.de>
172         PR debug/86687
173         * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
175 2018-07-31  Jakub Jelinek  <jakub@redhat.com>
177         P1008R1 - prohibit aggregates with user-declared constructors
178         * class.c (check_bases_and_members): For C++2a set
179         CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
180         type_has_user_provided_or_explicit_constructor.
182 2018-07-31  Martin Liska  <mliska@suse.cz>
184         PR c++/86653
185         * parser.c (cp_parser_condition): Initialize non_constant_p
186         to false.
188 2018-07-28  David Malcolm  <dmalcolm@redhat.com>
190         * error.c (cp_printer): In the leading comment, move "%H" and "%I"
191         into alphabetical order, and add missing "%G" and "%K".  Within
192         the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
193         cases are in alphabetical order.
195 2018-07-25  Jakub Jelinek  <jakub@redhat.com>
197         * cp-tree.h (enum cp_tree_index): Add
198         CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
199         and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
200         (abi_tag_identifier, aligned_identifier, begin_identifier,
201         end_identifier, get__identifier, gnu_identifier,
202         tuple_element_identifier, tuple_size_identifier, type_identifier,
203         value_identifier, fun_identifier, closure_identifier): Define.
204         * decl.c (initialize_predefined_identifiers): Initialize the above
205         identifiers.
206         (get_tuple_size): Use tuple_size_identifier instead of
207         get_identifier ("tuple_size") and value_identifier instead of
208         get_identifier ("value").
209         (get_tuple_element_type): Use tuple_element_identifier instead of
210         get_identifier ("tuple_element") and type_identifier instead of
211         get_identifier ("type").
212         (get_tuple_decomp_init): Use get__identifier instead of
213         get_identifier ("get").
214         * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
215         get_identifier ("_FUN").
216         * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
217         instead of get_identifier ("__closure").
218         (cp_parser_std_attribute): Use gnu_identifier instead of
219         get_identifier ("gnu").
220         (cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
221         instead of get_identifier ("aligned").
222         * class.c (check_abi_tags, inherit_targ_abi_tags): Use
223         abi_tag_identifier instead of get_identifier ("abi_tag").
225         PR c++/85515
226         * cp-tree.h (enum cp_tree_index): Add
227         CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
228         (for_range__identifier, for_begin__identifier, for_end__identifier,
229         for_range_identifier, for_begin_identifier, for_end_identifier):
230         Define.
231         * decl.c (initialize_predefined_identifiers): Initialize
232         for_{range,begin,end}{,_}_identifier.
233         * parser.c (build_range_temp): Use for_range__identifier instead of
234         get_identifier ("__for_range").
235         (cp_convert_range_for): Use for_begin__identifier and
236         for_end__identifier instead of get_identifier ("__for_begin") and
237         get_identifier ("__for_end").
238         * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
239         local symbols to "__for_{range,begin,end}".
241 2018-07-23  Jakub Jelinek  <jakub@redhat.com>
243         PR c++/86569
244         * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
245         of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
246         or warn_nonnull_compare.
248 2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
250         Revert fix for c++/59480 (and testsuite followup)
252         2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
254         PR c++/59480, DR 136
255         * decl.c (check_no_redeclaration_friend_default_args): New.
256         (duplicate_decls): Use the latter; also check that a friend
257         declaration specifying default arguments is a definition.
259 2018-07-18  Jakub Jelinek  <jakub@redhat.com>
261         PR c++/86550
262         * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
263         specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
265 2018-07-18  Marek Polacek  <polacek@redhat.com>
267         PR c++/86190 - bogus -Wsign-conversion warning
268         * typeck.c (cp_build_binary_op): Fix formatting.  Add a warning
269         sentinel.
271 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
273         PR c++/59480, DR 136
274         * decl.c (check_no_redeclaration_friend_default_args): New.
275         (duplicate_decls): Use the latter; also check that a friend
276         declaration specifying default arguments is a definition.
278 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
280         * class.c (note_name_declared_in_class): Prefer permerror + inform
281         to a pair of permerrors; use DECL_SOURCE_LOCATION.
283 2018-07-18  Richard Biener  <rguenther@suse.de>
285         PR debug/86523
286         * decl2.c (c_parse_final_cleanups): Call write_out_vars before
287         start_static_storage_duration_function sets current_function_decl.
289 2018-07-17  Jason Merrill  <jason@redhat.com>
291         PR c++/86480 - nested variadic lambda and constexpr if.
292         * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
293         IF_STMT_EXTRA_ARGS.
294         * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
295         cp_unevaluated_operand.
296         [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
298 2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>
300         * class.c (resolve_address_of_overloaded_function): Don't emit an
301         inform if the matching permerror returns false.
302         * pt.c (check_specialization_namespace): Likewise.
304 2018-07-16  Jakub Jelinek  <jakub@redhat.com>
306         PR c++/3698
307         PR c++/86208
308         * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
309         in TREE_USED flag from stmt to h->to.
311 2018-07-13  Nathan Sidwell  <nathan@acm.org>
313         PR c++/86374
314         * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
315         contexts that are classes.
316         * parser.c (cp_parser_template_id): Combine entering_scope decl &
317         initializer.
319 2018-07-12  Jakub Jelinek  <jakub@redhat.com>
321         * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
322         type here, instead add "omp declare target implicit" attribute.  Add
323         that attribute instead of "omp declare target" also when
324         processing_template_decl.
325         * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
326         and before calling cp_omp_mappable_type call complete_type.
328 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
330         PR sanitizer/86406
331         * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
332         DEBUG_BEGIN_STMTs.
334         PR c++/86443
335         * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
336         instead of setting *lastp turn orig_declv elt into a TREE_LIST.
337         (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
338         * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
339         TREE_LIST for both the original class iterator and the "last" helper
340         var.
342 2018-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
344         * decl.c (grokdeclarator): Use rich_location::add_range in three
345         more places; include gcc-rich-location.h.
347 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
349         * decl.c (build_enumerator): Change overflow type to overflow_type.
350         * init.c (build_new_1): Same.
352 2018-07-05  Nathan Sidwell  <nathan@acm.org>
354         * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
355         NO_IMPLICIT_EXTERN_C.
356         * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
358 2018-07-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
360         PR c++/86398
361         * method.c (is_trivially_xible): Return false
362         if is_xible_helper returns a NULL_TREE.
364 2018-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
366         * decl.c (min_location): New.
367         (smallest_type_quals_location): Use the latter.
368         (check_concept_fn): Use DECL_SOURCE_LOCATION.
369         (grokdeclarator): Use accurate locations in a number of error
370         messages involving ds_thread, ds_storage_class, ds_virtual,
371         ds_constexpr, ds_typedef and ds_friend; exploit min_location.
373 2018-07-03  Marek Polacek  <polacek@redhat.com>
375         PR c++/86201
376         * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
378 2018-07-03  Jason Merrill  <jason@redhat.com>
380         PR c++/86378 - functional cast in noexcept-specifier.
381         * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
383 2018-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
385         * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
386         in error message about __thread and thread_local at the same time.
388 2018-06-29  Marek Polacek  <polacek@redhat.com>
390         PR c++/86184
391         * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
393 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
395         * parser.c (cp_parser_error_1): After issuing a conflict marker
396         error, consume tokens until the end of the source line.
398 2018-06-28  Jason Merrill  <jason@redhat.com>
400         PR c++/86342 - -Wdeprecated-copy and system headers.
401         * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
402         in system headers.
404 2018-06-27  David Malcolm  <dmalcolm@redhat.com>
406         PR c++/86329
407         * name-lookup.c (consider_binding_level): Filter out names that
408         match anon_aggrname_p.
410 2018-06-27  Jason Merrill  <jason@redhat.com>
412         * name-lookup.c (do_pushtag): If we skip a class level, also skip
413         its template level.
415 2018-06-26  Jason Merrill  <jason@redhat.com>
417         PR c++/86320 - memory-hog with std::array of pair
418         * typeck2.c (process_init_constructor_array): Only compute a
419         constant initializer once.
421         PR c++/80290 - memory-hog with std::pair.
422         * pt.c (fn_type_unification): Add convs parameter.
423         (check_non_deducible_conversion): Remember conversion.
424         (check_non_deducible_conversions): New.  Do checks here.
425         (type_unification_real): Not here.  Remove flags parm.
426         * call.c (add_function_candidate): Make convs a parameter.
427         Don't recalculate the conversion if it's already set.
428         (add_template_candidate_real): Allocate convs here.
429         (good_conversion, conv_flags): New.
431 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
433         PR c++/86291
434         * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
435         type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
437 2018-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
439         * decl.c (bad_specifiers): Add const location_t* parameter and
440         use locations in error messages about 'inline' and 'virtual'.
441         (mark_inline_variable): Add location_t parameter and use it in
442         error_at and pedwarn messages.
443         (grokdeclarator): Use declspecs->locations[ds_constexpr],
444         declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
445         declspecs->locations[ds_inline] in many error messages; adjust
446         bad_specifiers and mark_inline_variable calls.
447         (grokvardecl): Use declspecs->locations[ds_concept] in error message.
449 2018-06-22  Jason Merrill  <jason@redhat.com>
451         PR c++/86219 - ICE with erroneous initializer in template.
452         * constexpr.c (fold_non_dependent_expr): Add complain parm.
453         * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
454         Pass it.
455         * call.c (build_cxx_call): Don't mess with builtins in a template.
456         * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
457         produce a constant value, go back to the uninstantiated form.
459         Avoid taking the address of something just because it's in parens.
460         * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
461         (cxx_fold_indirect_ref): Use it.
462         (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
463         * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
464         * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
465         static_cast to reference type.
466         (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
468 2018-06-21  Jason Merrill  <jason@redhat.com>
470         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
472         * name-lookup.c (do_push_to_top_level): Don't allocate
473         current_lang_base.
474         (do_pop_from_top_level): Release current_lang_base.
476         Let -fmem-report see callers of cxx_make_type.
477         * lex.c (cxx_make_type): Add MEM_STAT_DECL.
478         (make_class_type): Likewise.
479         (cxx_make_type_hook): New.
480         * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
482 2018-06-20  Nathan Sidwell  <nathan@acm.org>
484         PR c++/85634
485         * friend.c (add_friend): Keep lookup sets of tempate sets.
487 2018-06-20  Paolo Carlini  <paolo.carlini@oracle.com>
489         * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
490         tidy handling of a null location_t argument; use proper location
491         information in a few additional error messages.
492         (grokdeclarator): Update calls.
494 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
495             Thomas Schwinge <thomas@codesourcery.com>
496             Cesar Philippidis  <cesar@codesourcery.com>
498         * parser.c (cp_parser_omp_clause_name): Add support for finalize
499         and if_present. Make present_or_{copy,copyin,copyout,create} aliases
500         to their non-present_or_* counterparts. Make 'self' an alias to
501         PRAGMA_OACC_CLAUSE_HOST.
502         (cp_parser_oacc_data_clause): Update GOMP mappings for
503         PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
504         PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
505         (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
506         Remove support for present_or_* clauses.
507         (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
508         (OACC_PARALLEL_CLAUSE_MASK): Likewise.
509         (OACC_DECLARE_CLAUSE_MASK): Likewise.
510         (OACC_DATA_CLAUSE_MASK): Likewise.
511         (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
512         (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
513         (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
514         (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
515         * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
516         * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
518 2018-06-20  Marek Polacek  <polacek@redhat.com>
520         PR c++/86240
521         * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
522         (fold_simple_1): Likewise.
523         * error.c (dump_expr): Likewise.
525 2018-06-20  Nathan Sidwell  <nathan@acm.org>
527         PR c++/85634
528         * cp-tree.h (lookup_keep): Drop KEEP parm.
529         (lookup_list_keep): Delete.
530         (maybe_get_fns): Declare.
531         * parser.c (cp_parser_primary_expression): Call lookup_keep here.
532         (cp_parser_template_id): Not here ...
533         * decl.c (cp_finish_decl): ... nor here ...
534         * init.c (build_raw_new_expr): ... nor here ...
535         * pt.c (process_template_parm): ... nor here ...
536         * semantics.c (perform_koenig_lookup): Call lookup_keep.
537         (finish_call_expr): Not here.
538         * tree.c (ovl_cache): Delete.
539         (ovl_make, ovl_copy): No cache.
540         (lookup_keep): Always keep.
541         (lookup_list_keep): Delete.
542         (maybe_get_fns): New, broken out of ...
543         (get_fns): ... here.  Call it.
544         (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
545         (build_min_nt_call_vec): Likewise.
547 2018-06-19  Jason Merrill  <jason@redhat.com>
549         * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
550         * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
552         PR c++/86182 - ICE with anonymous union passed to template.
553         * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
554         used to declare a named variable.
556 2018-06-18  Jason Merrill  <jason@redhat.com>
558         * tree.c (cp_expr_location): New.
559         * cp-tree.h (cp_expr_loc_or_loc): New.
560         * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
561         error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
562         typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
564         * parser.c (cp_parser_lambda_expression): Use a range for
565         LAMBDA_EXPR_LOCATION.
567         PR c++/86200 - ICE with unexpanded pack in lambda parameter.
568         * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
569         function type.
571         PR c++/81060 - ICE with unexpanded parameter pack.
572         * pt.c (check_for_bare_parameter_packs): Add loc parameter.
573         * decl.c (grokdeclarator): Call it for qualifying_scope.
575         PR c++/86171 - ICE with recursive alias instantiation.
576         * pt.c (tsubst_decl): Handle recursive alias instantiation.
578 2018-06-18  Paolo Carlini  <paolo.carlini@oracle.com>
580         * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
581         in errors about redefined default arguments; tidy.
583 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
585         * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
586         * cp-gimplify.c (cp_fold): Likewise.
588 2018-06-15  Jason Merrill  <jason@redhat.com>
590         PR c++/86147 - wrong capture for template argument.
591         * expr.c (mark_use): Look through NOP_EXPR.
593         * name-lookup.c (do_pushtag): Don't look through complete types, but
594         don't add to them either.  Get context from current_binding_level.
595         * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
597         * decl.c (start_enum): Do compare dependent underlying type.
599         PR c++/82882 - ICE with lambda in template default argument.
600         * lambda.c (record_null_lambda_scope): New.
601         * pt.c (tsubst_lambda_expr): Use it.
602         * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
603         function that isn't open.
605         * tree.c (maybe_warn_parm_abi): Inform the location of the class.
607 2018-06-14  Marek Polacek  <polacek@redhat.com>
609         PR c++/86063
610         * decl2.c (cp_check_const_attributes): Skip trees that are not
611         TREE_LISTs.
613 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
615         P0624R2 - Default constructible and assignable stateless lambdas
616         * method.c (synthesized_method_walk): For C++2a don't mark
617         sfk_constructor or sfk_copy_assignment as deleted if lambda has
618         no lambda-captures.
620 2018-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
622         * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
623         OPT_Wshadow warning_at.
624         (grokfndecl): Consistently use the location_t argument in
625         literal operator diagnostic messages.
626         (grokdeclarator): Use declspecs->locations[ds_storage_class]
627         in error_at call.
628         * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
629         in permerror call.
631 2018-06-13  Jason Merrill  <jason@redhat.com>
633         PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
634         * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
635         constructors.
637         PR c++/86094 - wrong code with defaulted move ctor.
638         * class.c (classtype_has_non_deleted_move_ctor): New.
639         * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
640         Handle v12 breakage.
642 2018-06-12  Jason Merrill  <jason@redhat.com>
644         PR c++/86098 - ICE with template placeholder for TTP.
645         * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
646         CLASS_PLACEHOLDER_TEMPLATE.
648 2018-06-12  Paolo Carlini  <paolo.carlini@oracle.com>
650         * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
651         parameter and adjust error_at calls.
652         * decl.c (grok_op_properties): Adjust calls.
653         * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
655 2018-06-12  Marek Polacek  <polacek@redhat.com>
657         Core issue 1331 - const mismatch with defaulted copy constructor
658         * class.c (check_bases_and_members): When checking a defaulted
659         function, mark it as deleted rather than giving an error.
661 2018-06-11  Jason Merrill  <jason@redhat.com>
663         PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
664         * class.c (maybe_warn_about_overly_private_class): Handle inherited
665         constructors.
667         PR c++/85963 - -Wunused-but-set with ?: in template.
668         * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
670 2018-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
672         * decl.c (grok_op_properties): Consistently use the location
673         of the decl; remove special casing of POSTINCREMENT_EXPR and
674         POSTDECREMENT_EXPR wrt default arguments.
676 2018-06-05  Jason Merrill  <jason@redhat.com>
678         * constexpr.c (cxx_eval_binary_expression): Special case comparison
679         of pointers to members of the same union.
681 2018-06-11  Jason Merrill  <jason@redhat.com>
683         PR c++/86094 - wrong code with defaulted move ctor.
684         * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
686 2018-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
688         * decl.c (grokfndecl): Use the location_t argument in two more places.
690 2018-06-06  Marek Polacek  <polacek@redhat.com>
692         PR c++/85977
693         * pt.c (unify): If ELTTYPE has no deducible template parms, skip
694         deduction from the list elements.
695         (type_unification_real): Check convertibility of list elements.
697 2018-06-06  Jason Merrill  <jason@redhat.com>
699         PR c++/86060 - ICE on range for with -std=c++98.
700         * parser.c (cp_parser_init_statement): Don't clobber *decl after
701         pedwarn.
703         PR c++/85710 - ICE with -Wmemset-elt-size.
704         * semantics.c (finish_call_expr): Call warn_for_memset here.
705         * parser.c (cp_parser_postfix_expression): Not here.
706         (literal_integer_zerop): No longer static.
707         * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
709 2018-06-05  Marek Polacek  <polacek@redhat.com>
711         PR c++/85976
712         * tree.c (cp_tree_equal): Handle USING_DECL.
714 2018-06-05  Jason Merrill  <jason@redhat.com>
716         PR c++/85731 - wrong error with qualified-id in template.
717         * semantics.c (finish_qualified_id_expr): build_qualified_name
718         for unbound names in the current class.
720 2018-06-04  Jason Merrill  <jason@redhat.com>
722         PR c++/61806 - missed SFINAE with partial specialization.
723         * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
724         parameter to constructor.
725         * pt.c (instantiate_class_template_1): Enable access checking
726         before call to most_specialized_partial_spec.
728         PR c++/85765 - SFINAE and non-type default template arg.
729         * pt.c (type_unification_real): Do full semantic processing if
730         substituting a partial args list replaces all template parms.
732 2018-06-03  Jason Merrill  <jason@redhat.com>
734         PR c++/85739 - ICE with pointer to member template parm.
735         * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
737 2018-06-02  Jason Merrill  <jason@redhat.com>
739         PR c++/85761 - ICE with ill-formed use of const outer variable.
740         * expr.c (mark_use): Handle location wrappers.
742 2018-06-01  Jason Merrill  <jason@redhat.com>
744         PR c++/85764 - bogus 'this' not captured error.
745         * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
746         (nonlambda_method_basetype): Handle NSDMI.
748         CWG 1581: When are constexpr member functions defined?
749         * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
750         (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
752         PR c++/58281 - explicit instantiation of constexpr
753         * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
755         * pt.c (instantiate_decl): Any defaulted function is defined.
757 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
759         PR c++/77777
760         * call.c (resolve_args): Use location of expression, not current input
761         location.
763 2018-05-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
765         Do not warn about zero-as-null when NULL is used.
766         * call.c (conversion_null_warnings): Check for pointer
767         types converted from zero constants.
768         (convert_like_real): Add a warning sentinel at the end.
769         * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
770         check null_node_p.
772 2018-05-30  Jason Merrill  <jason@redhat.com>
774         PR c++/85807 - ICE with call in template NSDMI.
775         * init.c (get_nsdmi): Use push_to/pop_from_top_level.
776         * tree.c (bot_manip): Don't set_flags_from_callee in a template.
778         PR c++/85873 - constant initializer_list array not in .rodata.
779         * tree.c (build_target_expr): Set TREE_READONLY.
780         * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
782         * parser.c (cp_parser_check_condition_declarator): Handle
783         cp_error_declarator.
785 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
787         * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
788         of using it in dead store.
790 2018-05-29  Jason Merrill  <jason@redhat.com>
792         PR c++/67445 - returning temporary initializer_list.
793         PR c++/67711 - assigning from temporary initializer_list.
794         PR c++/48562 - new initializer_list.
795         * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
796         about returning local initializer_list.
797         * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
798         * call.c (build_over_call): Warn about assignment from temporary
799         init_list.
800         * init.c (build_new_1): Warn about 'new std::initializer_list'.
801         (find_list_begin, maybe_warn_list_ctor): New.
802         (perform_member_init): Use maybe_warn_list_ctor.
804 2018-05-29  Marek Polacek  <polacek@redhat.com>
806         PR c++/85883
807         * init.c (build_new): Handle deducing a class with new
808         with more than one argument.
810 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
812         PR c++/85952
813         * init.c (build_aggr_init): For structured binding initialized from
814         array call mark_rvalue_use on the initializer.
816 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
818         * decl2.c (start_static_storage_duration_function): Use
819         splay_tree_delete_pointers.
821 2018-05-25  Jason Merrill  <jason@redhat.com>
823         PR c++/85815 - reference to member of enclosing template.
824         * search.c (lookup_base): Use currently_open_class.
825         (lookup_member): Use it regardless of -fconcepts.
826         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
828         CWG 616, 1213 - value category of subobject references.
829         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
831 2018-05-24  Jason Merrill  <jason@redhat.com>
833         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
834         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
835         generic lambda.
837 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
839         Pedwarn on a non-standard position of a C++ attribute.
840         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
841         after the namespace name.
843 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
845         * cp-tree.h (INDIRECT_TYPE_P): New.
846         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
847         joust): Use it instead of POINTER_TYPE_P.
848         * class.c (update_vtable_entry_for_fn, find_flexarrays,
849         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
850         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
851         * cxx_eval_increment_expression, potential_constant_expression_1):
852         Likewise.
853         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
854         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
855         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
856         cp_ubsan_maybe_instrument_downcast): Likewise.
857         * cvt.c (cp_convert_to_pointer, ocp_convert,
858         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
859         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
860         pp_cxx_offsetof_expression_1): Likewise.
861         * decl.c (grokparms, static_fn_type): Likewise.
862         * decl2.c (grokbitfield): Likewise.
863         * error.c (dump_expr): Likewise.
864         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
865         * init.c (warn_placement_new_too_small): Likewise.
866         * lambda.c (build_capture_proxy, add_capture): Likewise.
867         * parser.c (cp_parser_omp_for_loop): Likewise.
868         * pt.c (convert_nontype_argument, fn_type_unification,
869         uses_deducible_template_parms, check_cv_quals_for_unify,
870         dependent_type_p_r): Likewise.
871         * search.c (check_final_overrider): Likewise.
872         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
873         finish_omp_for): Likewise.
874         * tree.c (cp_build_qualified_type_real): Likewise.
875         * typeck.c (build_class_member_access_expr,
876         finish_class_member_access_expr, build_x_indirect_ref,
877         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
878         Likewise.
880 2018-05-24  Jason Merrill  <jason@redhat.com>
882         PR c++/85864 - literal template and default template arg.
883         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
885 2018-05-24  Marek Polacek  <polacek@redhat.com>
887         PR c++/85847
888         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
889         variable for its result.  Fix a condition.
890         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
892 2018-05-23  Jason Merrill  <jason@redhat.com>
894         Fix cast to rvalue reference from prvalue.
895         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
896         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
897         non-class type.  Handle xvalue argument.
898         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
899         rvalue reference.
900         * semantics.c (finish_compound_literal): Do direct-initialization,
901         not cast, to initialize a reference.
903         CWG 616, 1213 - value category of subobject references.
904         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
905         an xvalue.
906         * typeck2.c (build_m_component_ref): Likewise.
907         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
908         distinction between temporary and xvalue.
910 2018-05-23  Marek Polacek  <polacek@redhat.com>
912         Implement P0614R1, Range-based for statements with initializer.
913         * parser.c (cp_parser_range_based_for_with_init_p): New.
914         (cp_parser_init_statement): Use it.  Parse the optional init-statement
915         for a range-based for loop.
916         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
918 2018-05-22  Jason Merrill  <jason@redhat.com>
920         PR c++/81420 - not extending temporary lifetime.
921         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
922         * class.c (build_base_path): Avoid redundant move of an rvalue.
924         PR c++/85866 - error with .* in default template arg.
925         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
927 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
929         * parser.c (cp_parser_parameter_declaration_list): Remove
930         bool* parameter.
931         (cp_parser_parameter_declaration_clause): Adjust.
932         (cp_parser_cache_defarg): Likewise.
934 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
936         PR c++/84588
937         * parser.c (cp_parser_maybe_commit_to_declaration,
938         cp_parser_check_condition_declarator): New.
939         (cp_parser_simple_declaration): Use the first above.
940         (cp_parser_condition): Use both the above; enforce
941         [stmt.stmt]/2 about the declarator not specifying
942         a function or an array; improve error-recovery.
944 2018-05-20  Jason Merrill  <jason@redhat.com>
946         PR libstdc++/85843 - warning in logic_error copy constructor.
947         * class.c (type_has_user_nondefault_constructor): Check for a
948         user-provided ctor, not user-declared.
950 2018-05-19  Jason Merrill  <jason@redhat.com>
952         * pt.c (tsubst_pack_expansion): Sorry rather than abort
953         on __integer_pack as subexpression of pattern.
955 2018-05-18  Jason Merrill  <jason@redhat.com>
957         PR c++/58407 - deprecated implicit copy ops.
958         * call.c (build_over_call): Warn about deprecated trivial fns.
959         * class.c (classtype_has_user_copy_or_dtor): New.
960         (type_build_ctor_call): Check TREE_DEPRECATED.
961         (type_build_dtor_call): Likewise.
962         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
963         Add checks.  Return bool.  Handle -Wdeprecated-copy.
964         (mark_used): Use it.
965         * decl.c (grokdeclarator): Remove redundant checks.
966         * typeck2.c (build_functional_cast): Likewise.
967         * method.c (lazily_declare_fn): Mark deprecated copy ops.
968         * init.c (build_aggr_init): Only set TREE_USED if there are
969         side-effects.
971 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
973         PR c++/85782
974         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
975         OACC_LOOPs.
977 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
979         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
980         (potential_constant_expression_1): Likewise.
982 2018-05-16  Marek Polacek  <polacek@redhat.com>
984         PR c++/85363
985         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
986         * tree.c (bot_manip): Call set_flags_from_callee for
987         AGGR_INIT_EXPRs too.
989 2018-05-15  Jason Merrill  <jason@redhat.com>
991         * cp-tree.h (cp_expr): Remove copy constructor.
992         * mangle.c (struct releasing_vec): Declare copy constructor.
994         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
996         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
997         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
998         is a throw-expression.
1000 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
1002         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
1003         (FOR_EACH_CLONE): Update.
1004         * decl.c (grokdeclarator): Use it.
1005         * decl2.c (vague_linkage_p): Likewise.
1006         * mangle.c (mangle_decl): Likewise.
1007         * method.c (lazily_declare_fn): Likewise.
1008         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
1009         * repo.c (repo_emit_p): Likewise.
1010         * tree.c (decl_linkage): Likewise.
1012 2018-05-14  Jason Merrill  <jason@redhat.com>
1014         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
1015         * tree.c (build_cp_fntype_variant): New.
1016         (build_ref_qualified_type, build_exception_variant)
1017         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
1018         (cxx_type_hash_eq, cp_check_qualified_type): Check
1019         TYPE_HAS_LATE_RETURN_TYPE.
1020         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
1021         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
1022         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
1023         (adjust_clone_args): Likewise.
1024         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
1025         build_cp_fntype_variant.
1026         (grokdeclarator): Pass late_return_type_p to grokfndecl.
1027         (check_function_type): Use cxx_copy_lang_qualifiers.
1028         (static_fn_type): Use cxx_copy_lang_qualifiers.
1029         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
1030         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
1031         (change_return_type): Use cxx_copy_lang_qualifiers.
1032         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
1033         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
1034         return type on the declarator like a normal trailing return type.
1035         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
1036         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
1037         * typeck.c (merge_types): Use build_cp_fntype_variant.
1039 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
1041         * cp-tree.h (TYPE_REF_P): New.
1042         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
1043         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
1044         direct_reference_binding, reference_binding, implicit_conversion,
1045         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
1046         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
1047         build_over_call, perform_implicit_conversion_flags,
1048         extend_ref_init_temps, type_has_extended_temps): Use it.
1049         * class.c (one_inheriting_sig, check_field_decls,
1050         check_bases_and_members, find_flexarrays, finish_struct,
1051         fixed_type_or_null): Likewise.
1052         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
1053         non_const_var_error, cxx_eval_constant_expression,
1054         potential_constant_expression_1): Likewise.
1055         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
1056         cp_genericize_r, cxx_omp_privatize_by_reference,
1057         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
1058         cp_fold_maybe_rvalue): Likewise.
1059         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
1060         * cvt.c (build_up_reference, convert_to_reference,
1061         convert_from_reference, convert_to_void, noexcept_conv_p,
1062         fnptr_conv_p): Likewise.
1063         * decl.c (poplevel, check_for_uninitialized_const_var,
1064         check_initializer, initialize_local_var, cp_finish_decl,
1065         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
1066         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
1067         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
1068         decl_maybe_constant_var_p): Likewise.
1069         * error.c (dump_type_prefix, dump_expr): Likewise.
1070         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
1071         is_admissible_throw_operand_or_catch_parameter): Likewise.
1072         * expr.c (mark_use): Likewise.
1073         * init.c (build_zero_init_1, build_value_init_noctor,
1074         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
1075         build_new, build_delete): Likewise.
1076         * lambda.c (build_lambda_object): Likewise.
1077         * mangle.c (write_expression, write_template_arg): Likewise.
1078         * method.c (forward_parm, do_build_copy_constructor,
1079         do_build_copy_assign, build_stub_object, constructible_expr,
1080         walk_field_subobs): Likewise.
1081         * parser.c (cp_parser_omp_for_loop_init,
1082         cp_parser_omp_declare_reduction_exprs,
1083         cp_parser_omp_declare_reduction): Likewise.
1084         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
1085         convert_template_argument, tsubst_pack_expansion,
1086         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
1087         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
1088         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
1089         value_dependent_expression_p, build_deduction_guide): Likewise.
1090         * semantics.c (finish_handler_parms, finish_non_static_data_member,
1091         finish_compound_literal, omp_privatize_field,
1092         handle_omp_array_sections_1, handle_omp_array_sections,
1093         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
1094         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
1095         finish_omp_clauses, finish_decltype_type, capture_decltype,
1096         finish_builtin_launder): Likewise.
1097         * tree.c (lvalue_kind, cp_build_reference_type, move,
1098         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
1099         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
1100         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
1101         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
1102         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
1103         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
1104         convert_for_initialization,
1105         maybe_warn_about_returning_address_of_local, check_return_expr,
1106         cp_type_quals, casts_away_constness, non_reference): Likewise.
1107         * typeck2.c (cxx_readonly_error, store_init_value,
1108         process_init_constructor_record, build_x_arrow, build_functional_cast,
1109         add_exception_specifier): Likewise.
1111 2018-05-14  Jason Merrill  <jason@redhat.com>
1113         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
1114         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
1116 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
1118         PR c/85696
1119         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
1120         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
1121         cxx_omp_predetermined_sharing_1.  Rename old function to ...
1122         (cxx_omp_predetermined_sharing_1): ... this.
1123         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
1124         instead of cxx_omp_predetermined_sharing.
1126 2018-05-10  Jason Merrill  <jason@redhat.com>
1128         * decl.c (cp_finish_decl): Don't instantiate auto variable.
1129         (check_static_variable_definition): Allow auto.
1130         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
1132         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
1133         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
1135         Core issue 2310 - conversion to base of incomplete type.
1136         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
1138         CWG 2267 - list-initialization of reference temporary
1139         * call.c (reference_binding): List-initializing a reference
1140         temporary is copy-list-initialization.
1142         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
1144         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
1145         instantiation in template context.
1147         * class.c (vbase_has_user_provided_move_assign): Use
1148         user_provided_p.
1150         * lambda.c (lambda_expr_this_capture): Improve logic.
1152         * decl.c (make_typename_type): s/parameters/arguments/.
1153         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
1154         * pt.c (make_pack_expansion): Correct error message.
1156 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
1158         PR c++/85662
1159         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
1160         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
1161         fold_convert.
1163 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
1165         PR c++/85400
1166         * decl2.c (adjust_var_decl_tls_model): New static function.
1167         (comdat_linkage): Call it on a variable.
1168         (maybe_make_one_only): Likewise.
1170 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
1172         PR c++/85713
1173         Revert:
1174         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1176         PR c++/84588
1177         * parser.c (cp_parser_parameter_declaration_list): When the
1178         entire parameter-declaration-list is erroneous maybe call
1179         abort_fully_implicit_template.
1181 2018-05-08  Jason Merrill  <jason@redhat.com>
1183         PR c++/85706 - class deduction under decltype
1184         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
1185         *walk_subtrees whether or not we walked into the operand.
1186         (type_uses_auto): Only look at deduced contexts.
1188 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
1190         PR c++/84588
1191         * parser.c (cp_parser_parameter_declaration_list): When the
1192         entire parameter-declaration-list is erroneous maybe call
1193         abort_fully_implicit_template.
1195 2018-05-08  Marek Polacek  <polacek@redhat.com>
1197         PR c++/85695
1198         * semantics.c (finish_if_stmt_cond): See through typedefs.
1200 2018-05-07  Jason Merrill  <jason@redhat.com>
1202         PR c++/85646 - lambda visibility.
1203         * decl2.c (determine_visibility): Don't mess with template arguments
1204         from the containing scope.
1205         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
1206         thunk.
1208 2018-05-07  Nathan Sidwell  <nathan@acm.org>
1210         Remove fno-for-scope
1211         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
1212         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
1213         (SET_DECL_SHADOWED_FOR_VAR): Delete.
1214         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1215         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
1216         Don't declare.
1217         * name-lookup.h (struct cp_binding_level): Remove
1218         dead_vars_from_for field.
1219         * cp-lang.c (cp_init_ts): Delete.
1220         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
1221         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
1222         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1223         (init_shadowed_var_for_decl): Delete.
1224         * decl.c (poplevel): Remove shadowed for var handling.
1225         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
1226         * name-lookup.c (find_local_binding): Remove shadowed for var
1227         handling.
1228         (check_local_shadow): Likewise.
1229         (check_for_out_of_scope_variable): Delete.
1230         * parser.c (cp_parser_primary_expression): Remove shadowed for var
1231         handling.
1232         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
1233         * semantics.c (begin_for_scope): Always have a scope.
1234         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
1235         (begin_range_for_stmt, finish_id_expression): Likewise.
1237 2018-05-07  Jason Merrill  <jason@redhat.com>
1239         PR c++/85618 - ICE with initialized VLA.
1240         * tree.c (vla_type_p): New.
1241         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
1242         rather than array_of_runtime_bound_p.
1244 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
1246         * cvt.c (ocp_convert): Early handle the special case of a
1247         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
1249 2018-05-03  Jason Merrill  <jason@redhat.com>
1251         PR c++/85600 - virtual delete failure.
1252         * init.c (build_delete): Always save_expr when deleting.
1254 2018-05-03  Nathan Sidwell  <nathan@acm.org>
1256         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
1257         * name-lookup.c (do_pushdecl): Likewise.
1259 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
1260             Jason Merrill  <jason@redhat.com>
1262         PR c++/68374
1263         * name-lookup.c (check_local_shadow): Don't handle static old
1264         declarations in the block handling locals shadowing locals.
1266 2018-05-01  Jason Merrill  <jason@redhat.com>
1268         PR c++/85587 - error with scoped enum in template.
1269         * semantics.c (finish_qualified_id_expr): Don't return an
1270         unqualified IDENTIFIER_NODE.
1272 2018-04-30  Jason Merrill  <jason@redhat.com>
1274         PR c++/85580 - extern "C" and local variables
1275         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
1277         PR c++/84701 - unsigned typeof.
1278         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
1279         of long/short/signed/unsigned.
1281         PR c++/85305 - pack in lambda init-capture.
1282         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
1283         check_for_bare_parameter_packs in a subexpression.
1284         (cp_parser_lambda_introducer): Use it.
1286         PR c++/61982 - dead stores to destroyed objects.
1287         * call.c (build_trivial_dtor_call): New, assigns a clobber.
1288         (build_over_call, build_special_member_call): Use it.
1289         * cp-tree.h: Declare it.
1290         * init.c (build_delete): Remove trivial path.
1292         * init.c (build_dtor_call): Use build_special_member_call.
1293         (build_delete): Remove redundant uses of save_addr.
1295         * decl.c (build_clobber_this): Use build_clobber.
1297 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
1299         PR c++/85553
1300         * init.c (build_zero_init_1): For zero initialization of
1301         NULLPTR_TYPE_P type use build_int_cst directly.
1303 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
1305         PR c++/85515
1306         * name-lookup.c (consider_binding_level): Skip compiler-generated
1307         variables.
1308         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
1309         nested if statements into a series of rejection tests.  Reject
1310         lambda-ignored entities as suggestions.
1312 2018-04-27  Jason Merrill  <jason@redhat.com>
1314         * cvt.c (cp_fold_convert): Use convert_ptrmem.
1315         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
1317 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
1319         PR c++/84691
1320         * decl.c (grokdeclarator): Clear friendp upon definition in local
1321         class definition error.
1323 2018-04-27  Jason Merrill  <jason@redhat.com>
1325         PR c++/85545 - ICE with noexcept PMF conversion.
1326         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
1327         build_ptrmemfunc.
1328         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
1329         adjustment.
1330         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
1332 2018-04-27  Nathan Sidwell  <nathan@acm.org>
1334         * typeck.c (convert_ptrmem): Move local var decls to initialization.
1336         * cp-tree.h (TEMPLATE_INFO): Fix comments.
1337         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
1338         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
1339         (dump, print_other_binding_stacks): Remove declarations.
1340         * name-lookup.c (print_other_binding_stack): Make static.
1341         * pt.c (build_template_decl): Make static.
1343 2018-04-26  Jason Merrill  <jason@redhat.com>
1345         PR c++/85545 - ICE with noexcept PMF conversion.
1346         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
1348 2018-04-25  Nathan Sidwell  <nathan@acm.org>
1350         PR c++/85437
1351         PR c++/49171
1352         * cp-tree.h (REINTERPRET_CAST_P): New.
1353         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
1354         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
1355         for non-trivial PTRMEM_CST cases.
1356         * typeck.c (build_nop_reinterpret): New.
1357         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
1358         NOP_EXPRs returned by cp_convert.
1360 2018-04-23  Jason Merrill  <jason@redhat.com>
1362         PR c++/69560 - wrong alignof(double) on x86.
1363         CWG 1879 - Inadequate definition of alignment requirement.
1364         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
1365         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
1366         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
1367         (cxx_alignof_expr): Pass it.
1368         * parser.c (cp_parser_unary_expression): Pass it.
1369         * pt.c (tsubst_copy): Copy it.
1370         (tsubst_copy_and_build): Pass it.
1371         * decl.c (fold_sizeof_expr): Pass it.
1373 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
1374             Jason Merrill  <jason@redhat.com>
1376         PR c++/85470 - wrong error with static data member.
1377         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
1378         * typeck2.c (store_init_value): Likewise.
1380 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
1382         PR c++/85462
1383         * cp-tree.h (tinst_level): Remove in_system_header_p member,
1384         change refcount member from unsigned char to unsigned short,
1385         add refcount_infinity static data member, adjust comments.
1386         * pt.c (tinst_level::refcount_infinity): Define.
1387         (inc_refcount_use): Remove assert, don't increment if refcount
1388         is already refcount_infinity, adjust comment.
1389         (dec_refcount_use): Remove assert, don't decrement if refcount
1390         is refcount_infinity, adjust comment.
1391         (push_tinst_level_loc): Formatting fix.
1393 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
1395         PR c++/84611
1396         * pt.c (lookup_template_class_1): Check pushtag return value for
1397         error_mark_node.
1399 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
1401         PR c++/80290
1402         * cp-tree.h (tinst_level::free): Fix whitespace.
1404 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
1406         PR c++/84630
1407         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
1408         for error_mark_node.
1410 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
1412         PR c++/84463
1413         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
1414         tricks from here to ...
1415         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
1416         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
1418 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
1420         PR c++/80290
1421         * cp-tree.h (struct tinst_level): Split decl into tldcl and
1422         targs.  Add private split_list_p, tree_list_p, and not_list_p
1423         inline const predicates; to_list private member function
1424         declaration; free public member function declaration; list_p,
1425         get_node and maybe_get_node accessors, and refcount data
1426         member.  Narrow errors to unsigned short.
1427         * error.c (print_instantiation_full_context): Use new
1428         accessors.
1429         (print_instantiation_partial_context_line): Likewise.  Drop
1430         const from tinst_level-typed parameter.
1431         * mangle.c (mangle_decl_string): Likewise.
1432         * pt.c (freelist): New template class.
1433         (tree_list_freelist_head): New var.
1434         (tree_list_freelist): New fn, along with specializations.
1435         (tinst_level_freelist_head): New var.
1436         (pending_template_freelist_head): Likewise.
1437         (tinst_level_freelist, pending_template_freelist): New fns.
1438         (tinst_level::to_list, tinst_level::free): Define.
1439         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
1440         (set_refcount_ptr): New template fn.
1441         (add_pending_template): Adjust for refcounting, freelists and
1442         new accessors.
1443         (neglectable_inst_p): Take a NULL d as a non-DECL.
1444         (limit_bad_template_recursion): Use new accessors.
1445         (push_tinst_level): New overload to create the list.
1446         (push_tinst_level_loc): Make it static, split decl into two
1447         args, adjust tests and initialization to cope with split
1448         lists, use freelist, adjust for refcounting.
1449         (push_tinst_level_loc): New wrapper with the old interface.
1450         (pop_tinst_level): Adjust for refcounting.
1451         (record_last_problematic_instantiation): Likewise.
1452         (reopen_tinst_level): Likewise.  Use new accessors.
1453         (instantiate_alias_template): Adjust for split list.
1454         (fn_type_unification): Likewise.
1455         (get_partial_spec_bindings): Likewise.
1456         (instantiate_pending_templates): Use new accessors.  Adjust
1457         for refcount.  Release pending_template to freelist.
1458         (instantiating_current_function_p): Use new accessors.
1460 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
1462         PR c++/85039
1463         * parser.c (cp_parser_builtin_offset): Reject type definitions.
1464         * mangle.c (nested_anon_class_index): Avoid crash returning -1
1465         if we've seen errors.
1467 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
1469         PR c++/85385
1470         * name-lookup.c (macro_use_before_def::maybe_make): New function,
1471         checking that the use is indeed before the definition.
1472         (macro_use_before_def::macro_use_before_def): Make private.
1473         (macro_use_before_def::~macro_use_before_def): Make private.  Move
1474         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
1475         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
1476         than using new directly.
1478 2018-04-12  Jason Merrill  <jason@redhat.com>
1480         PR c++/85356 - ICE with pointer to member function.
1481         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
1482         flag_noexcept_type.  Build the new spec within the function context.
1483         * except.c (build_noexcept_spec): Do get constant value in templates
1484         if flag_noexcept_type.
1485         * decl.c (check_redeclaration_exception_specification): Don't
1486         instantiate noexcept on a dependent declaration.
1488 2018-04-12  Marek Polacek  <polacek@redhat.com>
1490         PR c++/85258
1491         * constexpr.c (reduced_constant_expression_p): Return false for null
1492         trees.
1494 2018-04-11  Marek Polacek  <polacek@redhat.com>
1496         PR c++/85032
1497         * constexpr.c (potential_constant_expression_1): Consider conversions
1498         from classes to literal types potentially constant.
1500 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
1502         PR c++/70808
1503         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
1504         the type like TYPE_PTR_OR_PTRMEM_P.
1506 2018-04-10  Jason Merrill  <jason@redhat.com>
1508         PR debug/65821 - wrong location for main().
1509         * call.c (clear_location_r, convert_default_arg): Revert.
1510         * tree.c (break_out_target_exprs): Add clear_location parm.
1511         (struct bot_data): New.
1512         (bot_manip): Clear location if requested.
1513         * init.c (get_nsdmi): Pass clear_location.
1515 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
1517         PR c++/85110
1518         * call.c (get_fndecl_argument_location): Make non-static.
1519         * cp-tree.h (get_fndecl_argument_location): New decl.
1520         * typeck.c (convert_for_assignment): When complaining due to
1521         conversions for an argument, show the location of the parameter
1522         within the decl.
1524 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
1526         PR c++/85312 - P0962 cleanup
1527         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
1528         diagnostics.
1530 2018-04-10  Jason Merrill  <jason@redhat.com>
1532         PR debug/65821 - wrong location for main().
1533         * call.c (clear_location_r): New.
1534         (convert_default_arg): Use it.
1535         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
1537         PR c++/85285 - ICE with flexible array after substitution.
1538         * pt.c (instantiate_class_template_1): Check for flexible array in
1539         union.
1541 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
1543         PR c++/85227
1544         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
1545         issue a pedwarn and defer trying to do bindings.
1547 2018-04-09  Jason Merrill  <jason@redhat.com>
1549         PR c++/85279 - dump_expr doesn't understand decltype.
1550         * error.c (dump_expr): Handle DECLTYPE_TYPE.
1552         PR c++/85262 - ICE with redundant qualification on constructor.
1553         * call.c (build_new_method_call_1): Move make_args_non_dependent
1554         after A::A() handling.
1556         PR c++/85277 - ICE with invalid offsetof.
1557         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
1558         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
1560         PR c++/85264 - ICE with excess template-parameter-list.
1561         * parser.c (cp_parser_check_template_parameters): Add template_id_p
1562         parameter.  Don't allow an extra template header if true.
1563         (cp_parser_class_head): Pass template_id_p.
1564         (cp_parser_elaborated_type_specifier): Likewise.
1565         (cp_parser_alias_declaration): Likewise.
1566         (cp_parser_check_declarator_template_parameters): Likewise.
1568 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
1570         PR c++/85194
1571         * parser.c (cp_parser_simple_declaration): For structured bindings,
1572         if *maybe_range_for_decl is NULL after parsing it, set it to
1573         error_mark_node.
1575 2018-04-09  Jason Merrill  <jason@redhat.com>
1577         PR c++/85256 - ICE capturing pointer to VLA.
1578         * lambda.c (add_capture): Distinguish between variable-size and
1579         variably-modified types.
1581 2018-04-06  Jason Merrill  <jason@redhat.com>
1583         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
1584         * pt.c (extract_locals_r): Remember local typedefs.
1586 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
1588         PR c++/84269
1589         * name-lookup.c (struct std_name_hint): Move out of
1590         get_std_name_hint; add field "min_dialect".
1591         (get_std_name_hint): Add min_dialect values to all initializers.
1592         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
1593         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
1594         <shared_mutex>, <string_view>, <thread>, and <variant>.
1595         Add fstream, ifstream, and ofstream to <fstream>.
1596         Add istringstream, ostringstream, and stringstream to <sstream>.
1597         Add basic_string to <string>.
1598         Add tuple_element and tuple_size to <tuple>.
1599         Add declval to <utility>.
1600         Fix ordering of <queue> and <tuple>.
1601         Return a std_name_hint, rather than a const char *.
1602         (get_cxx_dialect_name): New function.
1603         (maybe_suggest_missing_std_header): Detect names that aren't yet
1604         available in the current dialect, and instead of suggesting a
1605         missing #include, warn about the dialect.
1607 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
1609         PR c++/85210
1610         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
1611         errorcount is set if tsubst doesn't return a VAR_DECL.
1613 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
1615         PR c++/85021
1616         * name-lookup.c (using_directives_contain_std_p): New function.
1617         (has_using_namespace_std_directive_p): New function.
1618         (suggest_alternatives_for): Simplify if/else logic using early
1619         returns.  If no candidates were found, and there's a
1620         "using namespace std;" directive, call
1621         maybe_suggest_missing_std_header.
1622         (maybe_suggest_missing_header): Split later part of the function
1623         into..
1624         (maybe_suggest_missing_std_header): New.
1626 2018-04-06  Jason Merrill  <jason@redhat.com>
1628         PR c++/85242 - ICE with class definition in template parm.
1629         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
1630         processing_template_parmlist.
1632         PR c++/85240 - LTO ICE with using of undeduced auto fn.
1633         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
1635 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
1637         PR c++/85209
1638         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
1639         is not prev, if prev == decl.
1641         PR c++/85208
1642         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
1643         maybe_apply_pragma_weak here...
1644         (cp_maybe_mangle_decomp): ... but call it here instead.
1646 2018-04-05  Jason Merrill  <jason@redhat.com>
1648         PR c++/85136 - ICE with designated init in template.
1649         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
1650         designated initializer.
1651         (check_array_designated_initializer): Update ce->index with the
1652         constant value.
1654         PR c++/83808 - ICE with VLA initialization.
1655         * typeck2.c (process_init_constructor_array): Don't require a VLA
1656         initializer to have VLA type.
1658 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
1660         PR c++/80956
1661         * call.c (convert_like_real): Fail gracefully for a broken
1662         std::initializer_list, missing a definition.
1664         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
1666 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
1668         PR c++/84792
1669         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
1670         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
1672 2018-04-05  Jason Merrill  <jason@redhat.com>
1674         PR c++/82152 - ICE with class deduction and inherited ctor.
1675         * pt.c (do_class_deduction): Ignore inherited ctors.
1677         PR c++/84665 - ICE with array of empty class.
1678         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
1680         PR c++/85228 - ICE with lambda in enumerator in template.
1681         * pt.c (bt_instantiate_type_proc): Don't assume
1682         CLASSTYPE_TEMPLATE_INFO is non-null.
1684 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
1686         Implement P0969
1687         * decl.c (find_decomp_class_base): Check accessibility instead
1688         of declared access, adjust diagnostic.
1690 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
1692         Implement P0961
1693         * decl.c (get_tuple_decomp_init): Check the templatedness
1694         of a member get.
1696 2018-04-05  Jason Merrill  <jason@redhat.com>
1698         PR c++/85200 - ICE with constexpr if in generic lambda.
1699         * pt.c (extract_locals_r): Don't record the local specs of variables
1700         declared within the pattern.
1702 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
1704         PR c++/84979
1705         * pt.c (check_auto_in_tmpl_args): New.
1706         (tsubst_qualified_id): Use it to reject template args
1707         referencing auto for non-type templates.
1708         * parser.c (cp_parser_template_id): Likewise.
1709         * cp-tree.h (check_auto_in_tmpl_args): Declare.
1710         * typeck2.c (build_functional_cast): Report correct location
1711         for invalid use of auto.
1713 2018-04-04  Jason Merrill  <jason@redhat.com>
1715         PR c++/85215 - ICE with copy-init from conversion.
1716         * call.c (merge_conversion_sequences): Fix type of direct binding
1717         sequence.
1719         PR c++/84938 - ICE with division by ~-1.
1720         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
1722         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
1723         * parser.c (cp_parser_mem_initializer_list): Call
1724         check_for_bare_parameter_packs.
1726 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
1728         PR inline-asm/85172
1729         * constexpr.c (cxx_eval_builtin_function_call): For calls to
1730         builtin_valid_in_constant_expr_p functions, don't call
1731         cxx_eval_constant_expression if argument is not
1732         potential_constant_expression.
1734         PR c++/85146
1735         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
1736         argument.
1737         * semantics.c (calculate_bases): Add complain argument.  Use
1738         complete_type_or_maybe_complain instead of just complete_type and
1739         return an empty vector if it fails.  Move make_tree_vector () call
1740         after early return.  Formatting fixes.
1741         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
1742         end.
1743         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
1744         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
1745         calculate_direct_bases callers, formatting fixes.
1747 2018-04-04  Jason Merrill  <jason@redhat.com>
1749         PR c++/85006 - -fconcepts ICE with A<auto...> return type
1750         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
1752         PR c++/85200 - ICE with constexpr if in generic lambda.
1753         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
1755         PR c++/84221 - bogus -Wunused with attribute and template.
1756         * decl2.c (is_late_template_attribute): Handle unused and used
1757         normally on non-TYPE_DECL.
1759         PR c++/85135 - ICE with omitted template arguments.
1760         * decl.c (grokdeclarator): Catch deduced class type in trailing
1761         return type.
1763         PR c++/85133 - ICE with missing concept initializer.
1764         * decl.c (cp_finish_decl): If a concept initializer is missing, use
1765         true.
1767         PR c++/85118 - wrong error with generic lambda and std::bind.
1768         * call.c (add_template_conv_candidate): Disable if there are any
1769         call operators.
1771         PR c++/85141 - ICE with compound assignment and static member fn.
1772         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
1773         compound assignment.
1775         PR c++/85148 - ICE with 'this' in array NSDMI.
1776         * tree.c (replace_placeholders_r): Use handled_component_p.
1778 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
1780         PR c++/65923
1781         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
1782         * parser.c (cp_parser_unqualified_id): ..not here.
1784 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
1786         PR c++/84943
1787         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
1788         used.
1789         * decl2.c (mark_used): Return without effects if tf_conv.
1791 2018-04-03  Jason Merrill  <jason@redhat.com>
1793         PR c++/85092 - C++17 ICE with unused list constructor.
1794         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
1795         from a TARGET_EXPR.
1797         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
1798         * constexpr.c (cxx_eval_builtin_function_call): Only defer
1799         __builtin_constant_p if ctx->quiet.
1801 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
1803         PR c++/84768
1804         * pt.c (rewrite_template_parm): If the first argument is
1805         error_mark_node return it immediately.
1806         (build_deduction_guide): Check the return value of the
1807         latter for error_mark_node.
1808         (do_class_deduction): Check the return value of the latter.
1810 2018-04-03  Jason Merrill  <jason@redhat.com>
1812         * semantics.c (finish_if_stmt_cond): Use
1813         instantiation_dependent_expression_p.
1815         PR c++/85149 - generic lambda and constexpr if.
1816         * pt.c (build_extra_args, add_extra_args): Split from
1817         tsubst_pack_expansion.
1818         (tsubst_expr) [IF_STMT]: Use them.
1819         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
1821         * typeck.c (merge_types): Limit matching attribute shortcut to
1822         the default case.
1824 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
1826         PR c++/85147
1827         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
1829         PR c++/85140
1830         * name-lookup.c (handle_namespace_attrs): Return early if attributes
1831         is error_mark_node.
1833         PR c++/85134
1834         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
1835         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
1836         instead for static data members clear init and set DECL_EXTERNAL.
1838 2018-04-02  Jason Merrill  <jason@redhat.com>
1840         PR c++/64095 - auto... parameter pack.
1841         * parser.c (cp_parser_parameter_declaration): Handle turning autos
1842         into packs here.
1843         (cp_parser_parameter_declaration_list): Not here.
1845 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
1847         PR c++/85027
1848         * class.c (instantiate_type): Peel off SAVE_EXPR before
1849         BASELINK.
1851 2018-03-30  Jason Merrill  <jason@redhat.com>
1853         * typeck2.c (process_init_constructor_record): Use
1854         init_list_type_node for the CONSTRUCTOR around an anonymous union
1855         designated initializer.
1857 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
1859         PR c++/84791
1860         * semantics.c (finish_omp_reduction_clause): If
1861         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
1862         even if processing_template_decl.
1864 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1866         PR c++/84269
1867         * name-lookup.c (get_std_name_hint): Add names from <memory>,
1868         <tuple>, and <utility>.
1870 2018-03-29  Jason Merrill  <jason@redhat.com>
1872         PR c++/85093 - too many template args with pack expansion.
1873         * pt.c (coerce_template_parms): Keep pack expansion args that will
1874         need to be empty.
1876 2018-03-29  Jason Merrill  <jason@redhat.com>
1878         * pt.c (build_non_dependent_expr): Propagate expr location.
1880 2018-03-27  Jason Merrill  <jason@redhat.com>
1882         PR c++/85060 - wrong-code with call to base member in template.
1883         * search.c (any_dependent_bases_p): Check uses_template_parms
1884         rather than processing_template_decl.
1886 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
1888         PR c++/85110
1889         * typeck.c (convert_for_assignment): When complaining due to
1890         conversions for an argument, attempt to use the location of the
1891         argument.
1893 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
1895         PR c++/85028
1896         * pt.c (tsubst_default_argument): Early return if the type of the
1897         parameter is erroneous.
1899 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
1901         PR c++/84973
1902         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
1903         templates.
1905         PR c++/84968
1906         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
1908 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1910         PR c++/85067
1911         * method.c (defaulted_late_check): Partially revert r253321 changes,
1912         do not early return upon error.
1914 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1916         PR c++/85077
1917         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
1918         type call fold to generate VECTOR_CSTs when possible.
1920         PR c++/85076
1921         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
1922         return it right away.
1924 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
1926         * search.c (check_final_overrider): Use inform instead of error
1927         for the diagnostics of the overridden functions.  Tweak wording.
1929 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
1931         PR c++/85068
1932         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
1933         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
1935 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
1936             Jason Merrill  <jason@redhat.com>
1938         PR c++/84632
1939         * init.c (build_aggr_init): When initializing from array,
1940         reject anything but CONSTRUCTORs and TARGET_EXPRs.
1941         (build_vec_init): Handle separately ARRAY_TYPEs.
1943 2018-03-26  Jason Merrill  <jason@redhat.com>
1945         PR c++/85062 - ICE with alignas in wrong place.
1946         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
1947         here.
1949         PR c++/85049 - ICE with __integer_pack.
1950         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
1951         * cp-tree.h (TEMPLATE_PARM_P): New.
1953 2018-03-23  Jason Merrill  <jason@redhat.com>
1955         PR c++/78489 - wrong SFINAE behavior.
1957         PR c++/84489
1958         * pt.c (type_unification_real): Don't defer substitution failure.
1960 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
1962         PR c++/85015
1963         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
1964         result.
1966         PR c++/84942
1967         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
1968         cp_build_unary_op call with gcc_unreachable ().
1970 2018-03-23  Marek Polacek  <polacek@redhat.com>
1972         PR c++/85045
1973         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
1974         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
1975         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
1977 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
1979         Implement P0962
1980         * parser.c (cp_parser_perform_range_for_lookup): Change
1981         the condition for deciding whether to use members.
1983 2018-03-23  Marek Polacek  <polacek@redhat.com>
1985         PR c++/85033
1986         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
1988 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
1990         PR c++/71251
1991         * parser.c (cp_parser_alias_declaration): Call
1992         parser_check_template_parameters.
1994         PR c++/84789
1995         * pt.c (resolve_typename_type): Drop assert that stopped
1996         simplification to template-independent types.  Add assert to
1997         verify the initial scope is template dependent.
1998         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1999         Reparse the id expression as a type-name, not a declarator.
2001         PR c++/84729
2002         * init.c (build_vec_init): Error at parenthesized array init.
2004         PR c++/84610
2005         PR c++/84642
2006         PR c++/84942
2007         * cp-tree.h (temp_override): New template class, generalizing
2008         a cleanup that was only used...
2009         * parser.c (cp_parser_parameter_declaration_clause):
2010         ... here for auto_is_implicit_function_template_parm_p.
2011         (cp_parser_gnu_attributes_opt): Use it here as well.
2012         (cp_parser_std_attribute): Likewise.
2014 2018-03-22  Marek Polacek  <polacek@redhat.com>
2016         PR c++/84854
2017         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
2018         is boolean.
2020 2018-03-21  Jason Merrill  <jason@redhat.com>
2022         PR c++/81311 - wrong C++17 overload resolution.
2023         * call.c (build_user_type_conversion_1): Remove C++17 code.
2024         (conv_binds_ref_to_prvalue): New.
2025         (build_over_call): Handle C++17 copy elision.
2026         (build_special_member_call): Only do C++17 copy elision here if the
2027         argument is already the right type.
2029 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
2031         PR c++/71965
2032         * init.c (build_vec_init): Silence error, former sorry,
2033         without tf_error.
2035         PR c++/84610
2036         PR c++/84642
2037         * parser.c (abort_fully_implicit_template_p): New.
2038         (cp_parser_skip_to_end_of_statement): Use it.
2039         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2040         (finish_fully_implicit_template_p): Clear
2041         implicit_template_parms and implicit_template_scope.
2043 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
2045         PR c++/84972
2046         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
2047         error_mark_node when check_array_designated_initializer fails.
2049 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
2051         PR c++/84961
2052         * cp-tree.h (genericize_compound_lvalue): Declare.
2053         * typeck.c (genericize_compound_lvalue): New function.
2054         (unary_complex_lvalue, cp_build_modify_expr): Use it.
2055         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
2056         and PREDECREMENT_EXPR in output and "m" constrained input operands with
2057         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
2058         COMPOUND_EXPR operand.
2060 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2062         PR c++/85008
2063         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
2064         * decl2.c (vague_linkage_p): Likewise.
2066 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
2068         PR c++/84994
2069         * constexpr.c (constexpr_fn_retval): Make non-"static".
2070         * cp-tree.h (constexpr_fn_retval): New decl.
2071         * search.c (direct_accessor_p): Update leading comment.
2072         (reference_accessor_p): Likewise.
2073         (field_accessor_p): Replace check that function body is a
2074         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
2075         indentation of "field_type" decl.
2077 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2079         PR c++/84804
2080         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
2081         complete classes.
2083 2018-03-21  Martin Sebor  <msebor@redhat.com>
2085         PR c++/84850
2086         * call.c (first_non_public_field): New template and function.
2087         (first_non_trivial_field): New function.
2088         (maybe_warn_class_memaccess): Call them.
2090 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
2092         PR c++/84892
2093         * search.c (field_accessor_p): Use class_of_this_parm rather than
2094         type_of_this_parm, to check that "this" is a "const T *", rather
2095         than a "T *const".
2097 2018-03-21  Nathan Sidwell  <nathan@acm.org>
2099         * class.c (finish_struct_anon_r): Refactor, deprecate anything
2100         other than public non-static data members.
2101         * parser.c (cp_parser_init_declarator): Deprecate attributes after
2102         parenthesized initializer.
2104         PR c++/84836
2105         * name-lookup.c (update_binding): Correct logic for local binding
2106         update.
2108 2018-03-21  Marek Polacek  <polacek@redhat.com>
2110         PR c++/71638, ICE with NSDMI and reference.
2111         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2112         even when we replace an element.
2114 2018-03-20  Marek Polacek  <polacek@redhat.com>
2116         PR c++/84978, ICE with NRVO.
2117         * constexpr.c (cxx_eval_constant_expression): Handle the case when
2118         a RESULT_DECL isn't in the hash map.
2120 2018-03-20  Jason Merrill  <jason@redhat.com>
2122         PR c++/84978, ICE with NRVO.
2123         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
2124         (cp_get_callee_fndecl_nofold): New.
2125         * cp-gimplify.c (cp_genericize_r): Use it instead.
2126         * call.c (check_self_delegation): Likewise.
2128 2018-03-20  Nathan Sidwell  <nathan@acm.org>
2130         PR c++/84962
2131         * name-lookup.c (pushdecl_class_level): Push anon-struct's
2132         member_vec, if there is one.
2134         PR c++/84970
2135         * cp-tree.h (lookup_list_keep): Declare.
2136         * tree.c (lookup_list_keep): New, broken out of ...
2137         (build_min): ... here.  Call it.
2138         * decl.c (cp_finish_decl): Call lookup_list_keep.
2140 2018-03-19  Jason Merrill  <jason@redhat.com>
2142         PR c++/84937 - ICE with class deduction and auto.
2143         * pt.c (rewrite_template_parm): Fix auto handling.
2145 2018-03-19  Marek Polacek  <polacek@redhat.com>
2147         PR c++/84925
2148         * pt.c (enclosing_instantiation_of): Check if fn is null.
2150         PR c++/84927
2151         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2152         as we evaluate the elements.
2153         (cxx_eval_constant_expression): Verify constructor's flags
2154         unconditionally.
2156 2018-03-19  Jason Merrill  <jason@redhat.com>
2158         PR c++/71834 - template-id with too few arguments.
2159         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
2161 2018-03-19  Nathan Sidwell  <nathan@acm.org>
2163         PR c++/84835
2164         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
2165         * pt.c (build_template_decl): Propagate language linkage.
2167         PR c++/84812
2168         * name-lookup.c (set_local_extern_decl_linkage): Defend against
2169         ambiguous lookups.
2171 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2173         PR c/84910
2174         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
2175         diagnostics.
2176         * method.c (synthesize_method): Likewise.
2177         * pt.c (convert_nontype_argument): Likewise.
2179 2018-03-16  Jason Merrill  <jason@redhat.com>
2181         PR c++/84720 - ICE with rvalue ref non-type argument.
2182         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
2183         (convert_nontype_argument): Revert earlier change.
2185         PR c++/80227 - SFINAE and negative array size.
2186         * decl.c (compute_array_index_type): Use
2187         build_converted_constant_expr and valid_constant_size_p.
2189         PR c++/84906 - silent wrong code with ambiguous conversion.
2190         * call.c (build_user_type_conversion_1): Set need_temporary_p on
2191         ambiguous conversion.
2192         (convert_like_real): Check it.
2194         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
2195         * call.c (build_special_member_call): Don't convert an init-list
2196         argument directly to the class type.
2198 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2200         PR c++/79937
2201         PR c++/82410
2202         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
2203         (find_placeholder): Declare.
2204         * tree.c (struct replace_placeholders_t): Add exp member.
2205         (replace_placeholders_r): Don't walk into ctors with
2206         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
2207         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
2208         (replace_placeholders): Initialize data.exp.
2209         (find_placeholders_r, find_placeholders): New functions.
2210         * typeck2.c (process_init_constructor_record,
2211         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
2212         if adding NSDMI on which find_placeholder returns true.
2213         * call.c (build_over_call): Don't call replace_placeholders here.
2214         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
2215         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
2216         TARGET_EXPR_INITIAL.
2217         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
2218         ctor.
2220 2018-03-16  Jason Merrill  <jason@redhat.com>
2222         PR c++/83911 - ICE with multiversioned constructor.
2223         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
2224         dispatchere here.
2225         * call.c (build_over_call): Not here.
2227 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
2229         PR c++/84874
2230         * decl.c (reshape_init_class): Don't assert d->cur->index == field
2231         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
2233 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
2235         PR c++/84222
2236         * cp-tree.h (cp_warn_deprecated_use): Declare.
2237         * tree.c (cp_warn_deprecated_use): New function.
2238         * typeck2.c (build_functional_cast): Use it.
2239         * decl.c (grokparms): Likewise.
2240         (grokdeclarator): Likewise.  Temporarily push nested class scope
2241         around grokparms call for out of class member definitions.
2243 2018-03-14  Jason Merrill  <jason@redhat.com>
2245         PR c++/84820 - no error for invalid qualified-id.
2246         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
2247         cp_error_declarator.
2249         PR c++/84801 - ICE with unexpanded pack in lambda.
2250         * pt.c (check_for_bare_parameter_packs): Don't return early for a
2251         lambda in non-template context.
2253         PR c++/81236 - auto variable and auto function
2254         * pt.c (tsubst_baselink): Update the type of the BASELINK after
2255         mark_used.
2257 2018-03-14  Jason Merrill  <jason@redhat.com>
2259         PR c++/83916 - ICE with template template parameters.
2260         * pt.c (convert_template_argument): Don't substitute into type of
2261         non-type parameter if we don't have enough arg levels.
2262         (unify): Likewise.
2264 2018-03-14  Marek Polacek  <polacek@redhat.com>
2266         PR c++/84596
2267         * semantics.c (finish_static_assert): Check
2268         instantiation_dependent_expression_p instead of
2269         {type,value}_dependent_expression_p.
2271 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
2272             Jason Merrill  <jason@redhat.com>
2274         PR c++/82336 - link error with list-init default argument.
2275         * decl.c (check_default_argument): Unshare an initializer list.
2277 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2279         PR c++/84843
2280         * decl.c (duplicate_decls): For redefinition of built-in, use error
2281         and return error_mark_node.  For redeclaration, return error_mark_node
2282         rather than olddecl if !flag_permissive.
2284 2018-03-13  Jason Merrill  <jason@redhat.com>
2286         PR c++/82565 - ICE with concepts and generic lambda.
2287         * pt.c (instantiate_decl): Clear fn_context for lambdas.
2289 2018-03-13  Jason Merrill  <jason@redhat.com>
2291         PR c++/84720 - ICE with rvalue ref non-type argument.
2292         * pt.c (convert_nontype_argument): Handle rvalue references.
2294         PR c++/84839 - ICE with decltype of parameter pack.
2295         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
2296         instantiating dummy parms.
2298         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
2299         parameter even without -Wpedantic.
2301         PR c++/84798 - ICE with auto in abstract function declarator.
2302         * parser.c (cp_parser_parameter_declaration_clause): Check
2303         parser->default_arg_ok_p.
2305 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
2307         PR c++/84808
2308         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
2309         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
2310         sizetype.  Formatting fixes.
2312 2018-03-12  Jason Merrill  <jason@redhat.com>
2314         PR c++/84355 - ICE with deduction for member class template.
2315         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
2316         CLASS_PLACEHOLDER_TEMPLATE.
2318         PR c++/84802 - ICE capturing uninstantiated class.
2319         * lambda.c (build_capture_proxy): Call complete_type.
2321 2018-03-09  Jason Merrill  <jason@redhat.com>
2323         PR c++/84770 - ICE with typedef and parameter pack.
2324         * pt.c (verify_unstripped_args_1): Split out from
2325         verify_unstripped_args.
2327         PR c++/84785 - ICE with alias template and default targs.
2328         * pt.c (type_unification_real): Set processing_template_decl if
2329         saw_undeduced == 1.
2331         PR c++/84752 - ICE with capture of constexpr array.
2332         * call.c (standard_conversion): Set rvaluedness_matches_p on the
2333         identity conversion under ck_lvalue.
2335 2018-03-09  Jason Merrill  <jason@redhat.com>
2336             Paolo Carlini  <paolo.carlini@oracle.com>
2338         PR c++/71169
2339         PR c++/71832
2340         * pt.c (any_erroneous_template_args_p): New.
2341         * cp-tree.h (any_erroneous_template_args_p): Declare it.
2342         * parser.c (cp_parser_class_specifier_1): Use it.
2344 2018-03-09  Jason Merrill  <jason@redhat.com>
2346         PR c++/84726 - unnecessary capture of constant vars.
2347         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
2348         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
2349         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
2350         * lambda.c (is_constant_capture_proxy)
2351         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
2352         (prune_lambda_captures): New.
2353         (finish_lambda_function): Call prune_lambda_captures.
2355 2018-03-09  Jason Merrill  <jason@redhat.com>
2356             Jakub Jelinek  <jakub@redhat.com>
2358         PR c++/84076
2359         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
2360         build ADDR_EXPR with REFERENCE_TYPE.
2361         (build_over_call): For purposes of check_function_arguments, if
2362         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
2363         its operand rather than the argument itself.
2365 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
2367         PR c++/84724
2368         * decl.c (duplicate_decls): Don't override __* prefixed builtins
2369         except for __[^b]*_chk, instead issue permerror and for -fpermissive
2370         also a note and return olddecl.
2372 2018-03-09  Nathan Sidwell  <nathan@acm.org>
2374         PR c++/84733
2375         * name-lookup.c (do_pushdecl_with_scope): Only clear
2376         current_function_decl when pushing a non-class (i.e. namespace)
2377         scope.
2379 2018-03-08  Jason Merrill  <jason@redhat.com>
2380             Jakub Jelinek  <jakub@redhat.com>
2382         PR c++/80598
2383         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
2384         not calling mark_used for the benefit of -Wunused-function warning.
2386 2018-03-06  Jason Merrill  <jason@redhat.com>
2388         * lambda.c (is_capture_proxy_with_ref): Remove.
2389         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
2391 2018-03-06  Marek Polacek  <polacek@redhat.com>
2393         PR c++/84684
2394         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
2395         arguments.
2397 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
2399         PR c++/84231
2400         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
2401         only while processing template decls.
2402         * typeck.c (build_x_conditional_expr): Move wrapping of
2403         reference type around type...
2404         * call.c (build_conditional_expr_1): ... here.  Rename
2405         is_lvalue to is_glvalue.
2406         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
2407         INDIRECT_REF of COND_EXPR too.
2409         PR c++/84593
2410         * init.c (build_zero_init_1): Zero-initialize references.
2412         PR c++/84492
2413         * semantics.c (finish_stmt_expr_expr): Reject unresolved
2414         overloads used as stmt expr values.
2416 2018-03-05  Jason Merrill  <jason@redhat.com>
2418         PR c++/84708 - ICE with lambda in local class NSDMI.
2419         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
2420         context.
2422 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
2424         PR c++/84684
2425         * constexpr.c (constexpr_call_hasher::equal): Return false if
2426         lhs->hash != rhs->hash.  Change return 1 to return true and
2427         return 0 to return false.
2429 2018-03-05  Nathan Sidwell  <nathan@acm.org>
2431         PR c++/84702
2432         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
2434 2018-03-05  Marek Polacek  <polacek@redhat.com>
2436         PR c++/84707
2437         * decl.c (duplicate_decls): Check DECL_NAME before accessing
2438         UDLIT_OPER_P.
2440 2018-03-05  Nathan Sidwell  <nathan@acm.org>
2442         PR c++/84694
2443         * friend.c (do_friend): Restore check for identifier_p inside
2444         TEMPLATE_ID_EXPR.
2446 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
2448         PR c++/84618
2449         * parser.c (cp_parser_lambda_introducer): Reject any capture not
2450         involving a VAR_DECL or a PARM_DECL.
2452 2018-03-05  Pádraig Brady  <P@draigBrady.com>
2453             Jason  Merrill  <jason@redhat.com>
2454             Nathan Sidwell  <nathan@acm.org>
2456         PR c++/84497
2457         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
2459 2018-03-03  Jason Merrill  <jason@redhat.com>
2461         PR c++/84686 - missing volatile loads.
2462         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
2464 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
2466         PR c++/71464
2467         * optimize.c (maybe_thunk_body): Bail out immediately if either
2468         fns[0] or fns[1] is null.
2470 2018-03-02  Marek Polacek  <polacek@redhat.com>
2472         PR c++/84578
2473         * constexpr.c (get_array_or_vector_nelts): New.
2474         (cxx_eval_array_reference): Use it.
2475         (cxx_eval_vec_init_1): Likewise.
2476         (cxx_eval_store_expression): Likewise.
2478 2018-03-02  Jason Merrill  <jason@redhat.com>
2480         * semantics.c (force_paren_expr): Remove redundant test.
2482 2018-03-02  Marek Polacek  <polacek@redhat.com>
2484         PR c++/84663
2485         * decl.c (cp_complete_array_type): Check error_mark_node.
2487         PR c++/84664
2488         * typeck.c (cp_perform_integral_promotions): Check the result of
2489         mark_rvalue_use.
2491 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
2493         PR c++/84662
2494         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
2495         RETURN instead of return.
2496         <case POINTER_PLUS_EXPR>: Likewise.
2497         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
2498         it instead of wrapping it into CONVERT_EXPR.
2500 2018-03-02  Jason Merrill  <jason@redhat.com>
2502         Fix MIPS16 ICE.
2503         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
2505 2018-03-02  Marek Polacek  <polacek@redhat.com>
2507         PR c++/84590
2508         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
2509         wrapped in VIEW_CONVERT_EXPR.
2511 2018-03-01  Martin Sebor  <msebor@redhat.com>
2513         PR c++/84294
2514         * decl.c (check_redeclaration_no_default_args): Merge attributes
2515         specified on redeclarations of the same function template.
2516         Remove dead code.
2518 2018-03-01  Marek Polacek  <polacek@redhat.com>
2519             Jason Merrill  <jason@redhat.com>
2521         PR c++/84582
2522         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
2523         a template.
2524         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
2525         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
2526         of instantiate_non_dependent_expr.
2527         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
2529 2018-03-01  Nathan Sidwell  <nathan@acm.org>
2531         PR c++/84434
2532         * name-lookup.c (member_vec_dedup): Remove manually peeled
2533         iteration.  Ignore dependent ctor inheritance.
2535 2018-03-01  Jason Merrill  <jason@redhat.com>
2537         PR c++/71569 - decltype of template.
2538         * parser.c (cp_parser_decltype_expr): Handle missing template args.
2540 2018-03-01  Marek Polacek  <polacek@redhat.com>
2542         PR c++/84596
2543         * constexpr.c (require_rvalue_constant_expression): New function.
2544         * cp-tree.h: Declare it.
2545         * semantics.c (finish_static_assert): Use it instead of
2546         require_potential_rvalue_constant_expression.
2548 2018-03-01  Jason Merrill  <jason@redhat.com>
2549             Alexandre Oliva <aoliva@redhat.com>
2551         PR c++/71569 - ICE with redundant args on member variable template.
2552         * decl.c (start_decl): Handle partial specialization of member
2553         variable template.
2554         * pt.c (determine_specialization): Allow partial specialization
2555         of member variable template without specializing enclosing class.
2556         (process_partial_specialization): Improve error message.
2558 2018-02-28  Jason Merrill  <jason@redhat.com>
2560         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
2561         * pt.c (determine_specialization): Check ref-qualifier.
2563 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
2565         PR c++/84609
2566         * parser.c (cp_parser_attributes_opt): Formatting fix.
2567         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
2568         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
2569         New functions.
2570         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
2571         instead of tentative parse to peek over optional attribute tokens
2572         to check for CPP_COLON after them.
2574         PR c++/83871
2575         PR c++/83503
2576         * pt.c (INCLUDE_STRING): Remove define.
2577         (warn_spec_missing_attributes): Use pretty_printer instead of
2578         std::string.  Fix up inform call so that the list of attributes
2579         is in %s argument.
2581 2018-02-28  Martin Sebor  <msebor@redhat.com>
2583         PR testsuite/84617
2584         * decl.c (duplicate_decls): Fully merge attributes const, pure,
2585         and malloc.
2587 2018-02-28  Nathan Sidwell  <nathan@acm.org>
2589         PR c++/84602
2590         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
2591         * name-lookup.c (fields_linear_search): Look in an anon-aggr
2592         regardless of want_type.
2593         (search_anon_aggr): Just use get_class_binding_direct.
2595 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
2597         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
2598         inform_n.
2600 2018-02-27  Martin Sebor  <msebor@redhat.com>
2602         * pt.c: Avoid including <string> directly.
2604 2018-02-27  Martin Sebor  <msebor@redhat.com>
2606         PR c++/83871
2607         PR c++/83503
2608         * cp-tree.h (warn_spec_missing_attributes): New function.
2609         ((check_explicit_specialization): Add an argument.  Call the above
2610         function.
2611         * decl.c (duplicate_decls): Avoid applying primary function template's
2612         attributes to its explicit specializations.
2613         cp/pt.c (warn_spec_missing_attributes): Define.
2615 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
2617         PR c++/71546 - lambda init-capture with qualified-id.
2618         * parser.c (cp_parser_lambda_introducer): Clear scope after
2619         each lambda capture.
2621 2018-02-27  Nathan Sidwell  <nathan@acm.org>
2623         PR c++/84426
2624         * name-lookup.h (get_member_slot): Rename ...
2625         (find_member_slot): ... here.
2626         (add_member_slot): New.
2627         * name-lookup.c (member_vec_linear_search): No need to check for
2628         NULL slot.
2629         (get_member_slot): Rename ...
2630         (find_member_slot): ... here.  Don't add slot for incomplete class.
2631         (add_member_slot): New.
2632         * class.c (add_method): Adjust get_member_slot rename.  Bail out
2633         if push_class_level_binding fails.  Create slot and grok
2634         properties once we're committed to insertion.
2636 2018-02-27  Jason Merrill  <jason@redhat.com>
2638         PR c++/84489 - dependent default template argument
2639         * pt.c (type_unification_real): Handle early substitution failure.
2641 2018-02-26  Jason Merrill  <jason@redhat.com>
2643         PR c++/84560 - ICE capturing multi-dimensional VLA.
2644         * tree.c (array_of_runtime_bound_p): False if the element is
2645         variably-modified.
2647         PR c++/84441 - ICE with base initialized from ?:
2648         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
2650         PR c++/84520 - ICE with generic lambda in NSDMI.
2651         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
2652         'this' in a generic lambda instantiation.
2654         PR c++/84559 - ICE with constexpr VLA.
2655         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
2656         for constexpr variable with VLA type.
2658 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
2660         PR c++/84558
2661         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
2662         a valid constant initializer.  Formatting fixes.
2664 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
2666         PR c++/84540
2667         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
2668         returning NULL_TREE.
2669         (apply_late_template_attributes): Likewise.
2671 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
2673         PR c++/84557
2674         * parser.c (cp_parser_omp_var_list_no_open): Only call
2675         cp_parser_lookup_name_simple on names satisfying identifier_p.
2676         (cp_parser_oacc_routine): Likewise.
2678 2018-02-26  Jason Merrill  <jason@redhat.com>
2680         PR c++/84551 - ICE with concepts and -g.
2681         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
2683 2018-02-26  Marek Polacek  <polacek@redhat.com>
2685         PR c++/84325
2686         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
2687         non-types.
2689 2018-02-26  Jason Merrill  <jason@redhat.com>
2691         PR c++/84447 - ICE with deleted inherited ctor with default arg.
2692         * call.c (build_over_call): Handle deleted functions in one place.
2694 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
2696         PR c++/84533
2697         * decl.c (redeclaration_error_message): Don't try to use
2698         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
2700 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
2702         * lambda.c (build_capture_proxy): Define static.
2703         * cp-tree.h (build_capture_proxy): Remove.
2705 2018-02-26  Marek Polacek  <polacek@redhat.com>
2707         PR c++/84537
2708         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
2709         if name is error node.
2711 2018-02-25  Jason Merrill  <jason@redhat.com>
2713         PR c++/84015 - ICE with class deduction and auto template parm.
2714         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
2716 2018-02-24  Marek Polacek  <polacek@redhat.com>
2718         PR c++/83692
2719         * constexpr.c (maybe_constant_init_1): New function.
2720         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
2721         (cxx_constant_init): New function.
2722         * cp-tree.h (cxx_constant_init): Declare.
2723         * typeck2.c (store_init_value): Call cxx_constant_init instead of
2724         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
2726 2018-02-22  Jason Merrill  <jason@redhat.com>
2728         PR c++/70468 - ICE with constructor delegation via typedef.
2729         * pt.c (tsubst_initializer_list): Check for other mem-initializers
2730         with constructor delegation.
2732 2018-02-22  Jason Merrill  <jason@redhat.com>
2734         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
2735         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
2736         VECTOR_TYPE.
2738 2018-02-22  Marek Polacek  <polacek@redhat.com>
2740         PR c++/84493
2741         * parser.c (cp_parser_braced_list): Use require_open instead of
2742         consume_open.
2744 2018-02-21  Jason Merrill  <jason@redhat.com>
2746         PR c++/84454 - ICE with pack expansion in signature.
2747         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
2749 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
2751         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
2752         IF_STMT.
2754 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
2756         PR c++/84446
2757         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
2758         on error_mark_node.
2760 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
2762         PR c++/84445
2763         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
2764         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
2766         PR c++/84449
2767         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
2768         returns error_mark_node, return it immediately.
2769         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
2770         error_mark_node, return error_mark_node.
2772         PR c++/84455
2773         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
2774         function_depth to avoid GC during finish_lambda_function.
2776 2018-02-19  Jason Merrill  <jason@redhat.com>
2778         PR c++/84429 - ICE capturing VLA.
2779         * lambda.c (build_capture_proxy): Handle reference refs.
2781 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
2783         PR c++/84448
2784         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
2785         either operand is error_mark_node, set current.lhs to that instead of
2786         creating a binary op with error_mark_node operands.
2788         PR c++/84430
2789         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
2791 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
2793         PR c++/84348
2794         * decl.c (grokdeclarator): Early return error_mark_node upon
2795         ill-formed friend declaration.
2797 2018-02-16  Marek Polacek  <polacek@redhat.com>
2798             Jakub Jelinek  <jakub@redhat.com>
2800         PR c++/84192
2801         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
2802         set *jump_target to anything if jump_target is NULL.
2804 2018-02-16  Jason Merrill  <jason@redhat.com>
2806         PR c++/84151 - unnecessary volatile load with static member.
2807         * call.c (build_new_method_call_1): Avoid loading from a volatile
2808         lvalue used as the object argument for a static member function.
2810         PR c++/81853 - using-directive and constexpr.
2811         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
2813         PR c++/84420 - ICE with structured binding in lambda.
2814         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
2816         PR c++/83835 - C++17 error with constructor ctors.
2817         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
2819         PR c++/82664 - ICE with reference to function template parm.
2820         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
2821         NOP_EXPRs.
2823         PR c++/82764 - C++17 ICE with empty base
2824         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
2826 2018-02-16  Jason Merrill  <jason@redhat.com>
2828         PR c++/84421 - type-dependent if constexpr
2829         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
2831 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2833         Deprecate -ffriend-injection.
2834         * decl.c (cxx_init_decl_processing): Emit warning on option.
2835         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
2836         friend.
2838 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
2840         PR c++/82468
2841         * decl.c (check_special_function_return_type): Reject template
2842         template parameter in deduction guide.
2844 2018-02-16  Nathan Sidwell  <nathan@acm.org>
2846         PR c++/84375
2847         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
2849 2018-02-15  Jason Merrill  <jason@redhat.com>
2851         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
2852         * call.c (convert_like_real): Don't use the copy-list-initialization
2853         shortcut for ck_base.
2855         PR c++/84045 - ICE with typedef and noexcept.
2856         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
2858         PR c++/84376 - ICE with omitted template arguments.
2859         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
2861         PR c++/84368 - wrong error with local variable in variadic lambda.
2862         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
2863         local_specializations.
2865 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
2867         PR c++/84330
2868         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
2869         as first argument.
2871 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2873         PR c++/84350
2874         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
2875         init, early return.
2877 2018-02-14  Nathan Sidwell  <nathan@acm.org>
2879         * decl2.c (mark_vtable_entries): Set input_location to decl's.
2880         (c_parse_final_cleanups): Restore input_location after emitting
2881         vtables.
2883 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
2885         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
2886         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
2887         auto_deduction_context, tree, int): Add defaults.
2888         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
2889         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
2890         tsubst_flags_t argument.
2891         * init.c (build_new): Likewise.
2893 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
2895         PR c++/84364
2896         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
2897         about return other than *this in assignment operators if
2898         retval is type dependent expression.
2900 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
2902         PR c++/84333
2903         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
2904         save_expr for the G++ extension.
2906 2018-02-13  Jason Merrill  <jason@redhat.com>
2908         PR c++/84080 - ICE with return type deduction and specialization.
2909         * pt.c (determine_specialization): Check uses_template_parms.
2911         Fix more variadic capture issues.
2912         * pt.c (find_parameter_packs_r): Also look at explicit captures.
2913         (check_for_bare_parameter_packs): Check current_class_type for
2914         lambda context.
2915         (extract_locals_r): Handle seeing a full instantiation of a pack.
2916         (tsubst_pack_expansion): Likewise.  Force lambda capture.
2917         * parser.c (cp_parser_lambda_introducer): Don't
2918         check_for_bare_parameter_packs.
2920         PR c++/84338 - wrong variadic sizeof.
2921         * pt.c (argument_pack_select_arg): Like the macro, but look through
2922         a pack expansion.
2923         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
2924         (extract_fnparm_pack): Do make_pack_expansion.
2925         (extract_locals_r): Do strip a pack expansion.
2926         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
2928 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
2930         PR c++/84341
2931         * parser.c (cp_parser_binary_expression): Use build_min instead of
2932         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
2934 2018-02-12  Nathan Sidwell  <nathan@acm.org>
2936         PR c++/84263
2937         * parser.c (cp_parser_decltype): Push and pop
2938         deferring_access_checks.  Reorganize to avoid goto.
2940 2018-02-12  Richard Biener  <rguenther@suse.de>
2942         PR c++/84281
2943         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
2944         uniform constructors and delay allocating them fully.
2946 2018-02-09  Jason Merrill  <jason@redhat.com>
2948         PR c++/84036 - ICE with variadic capture.
2949         Handle variadic capture proxies more like non-variadic.
2950         * lambda.c (build_capture_proxy): Remove workaround.
2951         * pt.c (find_parameter_packs_r): The proxy is a pack.
2952         (instantiate_class_template_1): Remove dead lambda code.
2953         (extract_fnparm_pack): Don't make_pack_expansion.
2954         (extract_locals_r): Don't strip a pack expansion.
2955         (tsubst_pack_expansion): Handle proxy packs.  Use
2956         PACK_EXPANSION_EXTRA_ARGS less.
2957         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
2958         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
2959         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
2960         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
2961         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
2963 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
2965         PR sanitizer/83987
2966         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
2968 2018-02-09  Jason Merrill  <jason@redhat.com>
2970         PR c++/81917 - ICE with void_t and partial specialization.
2971         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
2972         calling most_specialized_partial_spec.
2974 2018-02-09  Nathan Sidwell  <nathan@acm.org>
2976         PR c/84293
2977         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
2978         Pass expr location to strict_aliasing_warning.
2980 2018-02-09  Jason Merrill  <jason@redhat.com>
2982         PR c++/84296 - ICE with qualified-id in template.
2983         PR c++/83714
2984         * pt.c (unknown_base_ref_p): New.
2985         (instantiation_dependent_scope_ref_p): Use it instead of
2986         any_dependent_bases_p.
2988 2018-02-09  Marek Polacek  <polacek@redhat.com>
2989             Jakub Jelinek  <jakub@redhat.com>
2991         PR c++/83659
2992         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
2993         fold_indirect_ref_1, including poly_*int64.  Verify first that
2994         tree_fits_poly_int64_p (op01).  Formatting fixes.
2996 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
2998         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
2999         * lambda.c (build_capture_proxy): Likewise.
3000         * search.c (field_access_p): Likewise.
3001         * semantics.c (omp_clause_decl, omp_privatize_field,
3002         finish_omp_clauses): Likewise.
3004 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3006         PR c++/83806
3007         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
3008         case of nullptr too.
3010 2018-02-08  Nathan Sidwell  <nathan@acm.org>
3012         * class.c (finish_struct): Fix std:initializer_list diagnostic
3013         formatting.
3015 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
3017         PR c++/83204
3018         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
3020 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
3022         PR c++/84082
3023         * parser.c (cp_parser_dot_deref_incomplete): New function.
3024         (cp_parser_postfix_dot_deref_expression): Use it.
3026 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
3028         PR c++/81610
3029         PR c++/80567
3030         * name-lookup.c (suggest_rid_p): New function.
3031         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
3032         suggest_rid_p.
3034 2018-02-07  Jason Merrill  <jason@redhat.com>
3036         PR c++/84182 - ICE with captured lambda
3037         PR c++/84181
3038         * pt.c (extract_locals_r, extract_local_specs): New.
3039         (tsubst_pack_expansion): Use them.
3041 2018-02-07  Martin Liska  <mliska@suse.cz>
3043         PR c++/84059.
3044         * class.c (add_method): Append argument value.
3045         * cp-tree.h (maybe_version_functions): Add new argument.
3046         * decl.c (decls_match): Call it if a declaration does not
3047         have DECL_FUNCTION_VERSIONED.
3048         (maybe_version_functions): record argument is added.
3050 2018-02-05  Marek Polacek  <polacek@redhat.com>
3052         * class.c: Remove unused global variables.
3053         (build_primary_vtable): Don't gather statistics.
3054         (print_class_statistics): Remove.
3055         * cp-tree.h (print_class_statistics): Remove.
3056         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
3058 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
3060         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
3061         * constexpr.c (cx_check_missing_mem_inits): Likewise.
3062         * decl.c (next_initializable_field, find_decomp_class_base,
3063         cp_finish_decomp): Likewise.
3064         * typeck2.c (process_init_constructor_record): Likewise.
3066 2018-02-02  Jason Merrill  <jason@redhat.com>
3068         PR c++/84181 - ICE with lambda parm in template argument.
3069         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
3071 2018-02-01  Jason Merrill  <jason@redhat.com>
3073         PR c++/84160 - ICE with nested variadic capture.
3074         * lambda.c (is_capture_proxy_with_ref): New.
3075         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
3076         COMPONENT_REF.
3077         * expr.c (mark_use): Use is_capture_proxy_with_ref.
3078         * constexpr.c (potential_constant_expression_1): Likewise.
3079         * semantics.c (process_outer_var_ref): Likewise.
3081 2018-02-01  Marek Polacek  <polacek@redhat.com>
3083         PR c++/84125
3084         * typeck.c (build_address): Relax the assert when
3085         processing_template_decl.
3087 2018-02-01  Jason Merrill  <jason@redhat.com>
3089         PR c++/84126 - ICE with variadic generic lambda
3090         PR c++/84036
3091         PR c++/82249
3092         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
3093         PACK_EXPANSION_EXTRA_ARGS.
3095 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
3097         PR c++/83796
3098         * call.c (convert_like_real): If w're initializing from {} explicitly
3099         call abstract_virtuals_error_sfinae.
3101 2018-01-31  Jason Merrill  <jason@redhat.com>
3102             Jakub Jelinek  <jakub@redhat.com>
3104         PR c++/83993
3105         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
3106         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
3107         on ADDR_EXPR.
3109 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
3111         PR c++/83993
3112         * constexpr.c (diag_array_subscript): Emit different diagnostics
3113         if TYPE_DOMAIN (arraytype) is NULL.
3114         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
3115         with NULL TYPE_DOMAIN use size_zero_node as nelts.
3117 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
3119         PR c++/84092
3120         * semantics.c (finish_qualified_id_expr): When handling an
3121         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
3123 2018-01-31  Marek Polacek  <polacek@redhat.com>
3125         PR c++/84138
3126         * cp-gimplify.c (cp_fold): Check if X is an error node before
3127         calling useless_type_conversion_p.
3129 2018-01-30  Jason Merrill  <jason@redhat.com>
3131         PR c++/84091 - ICE with local class in lambda in template.
3132         * decl2.c (determine_visibility): Look for outer containing template
3133         instantiation.
3135         PR c++/84098 - ICE with lambda in template NSDMI.
3136         * pt.c (instantiate_class_template_1): Ignore more lambdas.
3138 2018-01-29  Jason Merrill  <jason@redhat.com>
3140         PR c++/68810 - wrong location for reinterpret_cast error.
3141         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
3142         !dofold.
3144 2018-01-29  Marek Polacek  <polacek@redhat.com>
3146         PR c++/83996
3147         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
3148         => fooarray[1] in offset_int.
3150 2018-01-29  Jason Merrill  <jason@redhat.com>
3152         PR c++/83942 - wrong unused warning with static_cast.
3153         * cvt.c (ocp_convert): Call mark_rvalue_use.
3155 2018-01-26  Jason Merrill  <jason@redhat.com>
3157         PR c++/83956 - wrong dtor error with anonymous union
3158         * method.c (walk_field_subobs): Variant members only affect
3159         deletedness.
3160         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
3162         PR c++/84036 - ICE with variadic capture.
3163         PR c++/82249
3164         * pt.c (tsubst_pack_expansion): When optimizing a simple
3165         substitution, pull a single pack expansion out of its pack.
3167         PR c++/82514 - ICE with local class in generic lambda.
3168         * pt.c (regenerated_lambda_fn_p): Remove.
3169         (enclosing_instantiation_of): Don't use it.
3170         (tsubst_function_decl): Call enclosing_instantiation_of.
3172         * pt.c (lookup_template_class_1): Add sanity check.
3173         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
3175 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
3177         PR c++/84031
3178         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
3179         recursive calls that return ret.
3180         (cp_finish_decomp): Ignore unnamed bitfields.
3182 2018-01-23  Jason Merrill  <jason@redhat.com>
3184         PR c++/82249 - wrong mismatched pack length error.
3185         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
3186         unsubstituted function parameter pack.
3188 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
3190         PR c++/83921
3191         * decl.c (check_for_uninitialized_const_var): Not static; add
3192         bool and tsubst_flags_t parameters; adjust to be used both in
3193         constexpr context and not.
3194         * constexpr.c (potential_constant_expression_1): Use the above.
3195         * cp-tree.h (check_for_uninitialized_const_var): Declare.
3197 2018-01-23  Jason Merrill  <jason@redhat.com>
3199         PR c++/83947 - ICE with auto declarations.
3200         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
3201         * decl.c (undeduced_auto_decl): Limit to vars and fns.
3203 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
3205         PR c++/83974
3206         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
3207         for pointer to member function types.
3209 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
3211         PR sanitizer/83987
3212         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
3213         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
3215 2018-01-23  Nathan Sidwell  <nathan@acm.org>
3217         PR c++/83988
3218         * pt.c (tsubst_baselink): Remove optype assert.
3219         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
3221 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
3223         PR c++/83958
3224         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
3225         refers to incomplete type.
3227 2018-01-23  Nathan Sidwell  <nathan@acm.org>
3229         Deprecate ARM-era for scope handling
3230         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
3231         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
3232         cleared.
3233         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
3234         cleanup handling.
3235         * semantics.c (begin_for_scope): Flag_new_for_scope is
3236         boolean-like.
3237         (finish_for_stmt, begin_range_for_stmt): Likewise.
3239 2018-01-22  Jason Merrill  <jason@redhat.com>
3241         PR c++/83720
3242         * decl2.c (determine_visibility): Fix template_decl handling
3243         instead of blocking it.
3245         PR c++/83720 - ICE with lambda and LTO.
3246         * decl2.c (determine_visibility): Clear template_decl for
3247         function-scope decls.  Propagate anonymous linkage from containing
3248         function.
3250 2018-01-22  Marek Polacek  <polacek@redhat.com>
3252         PR c++/81933
3253         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
3254         split out anything.
3256 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
3258         PR c++/83895
3259         * decl.c (grokdeclarator): Don't diagnose extra parens
3260         on typedefs.
3262 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
3264         PR c++/81167
3265         * call.c (joust): Use TREE_TYPE (source) if source is
3266         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
3268         PR c++/83919
3269         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
3270         for direct enum init.
3271         * decl.c (reshape_init): Likewise.
3273 2018-01-19  Marek Polacek  <polacek@redhat.com>
3275         * constexpr.c (fold_simple): Simplify.
3277 2018-01-18  Jason Merrill  <jason@redhat.com>
3279         PR c++/83714
3280         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
3281         * pt.c (instantiation_dependent_scope_ref_p): True if
3282         any_dependent_bases_p.
3284 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
3286         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
3287         vs DECL_NONTRIVIALLY_INITIALIZED_P).
3289 2018-01-18  Jason Merrill  <jason@redhat.com>
3291         PR c++/82461 - constexpr list-initialized member
3292         * constexpr.c (potential_constant_expression_1): Check
3293         TARGET_EXPR_DIRECT_INIT_P.
3295 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
3297         PR c++/81013
3298         * decl.c (xref_basetypes): Early return upon error about derived
3299         union.
3301 2018-01-18  Nathan Sidwell  <nathan@acm.org>
3303         PR c++/83160
3304         * cp-tree.h (mark_use): Declare.
3305         * expr.c (mark_use): Make extern.
3306         * call.c (direct_reference_binding): Set inner conv's
3307         rvaluedness_matches_p, if it is an identity.
3308         (convert_like_real): Mark lvalue or rvalue use for identity as
3309         rvaledness_matches_p demands.
3311 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
3313         PR c++/83824
3314         * parser.c (attr_chainon): New function.
3315         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
3316         cp_parser_namespace_definition, cp_parser_init_declarator,
3317         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
3318         cp_parser_gnu_attributes_opt): Use it.
3319         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
3320         cp_parser_objc_struct_declaration): Likewise.  Don't reset
3321         prefix_attributes if attributes is error_mark_node.
3323 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
3325         PR c++/78344
3326         * decl.c (grokdeclarator): Do not append the error_mark_node
3327         due to an erroneous optional attribute-specifier-seq.
3329 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
3331         PR c++/83897
3332         * cp-gimplify.c (cp_maybe_instrument_return): Handle
3333         CLEANUP_POINT_EXPR.
3335 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
3337         PR c++/81054
3338         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
3339         error_mark_node when we give an error.
3340         * decl.c (cp_finish_decl): Use the latter.
3342 2018-01-17  Nathan Sidwell  <nathan@acm.org>
3344         PR c++/83287
3345         * init.c (build_raw_new_expr): Scan list for lookups to keep.
3347 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
3349         PR c++/83814
3350         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
3351         the C++ part.  If processing a template, call
3352         fold_non_dependent_expr rather than fully folding.
3354 2018-01-17  Jason Merrill  <jason@redhat.com>
3356         PR c++/81067 - redundant NULL warning.
3357         * call.c (convert_like_real): Restore null_node handling.
3359 2018-01-17  Jason Merrill  <jason@redhat.com>
3361         PR c++/81843 - ICE with variadic member template.
3362         PR c++/72801
3363         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
3364         template args.
3366 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
3368         PR c++/83799
3369         * pt.c (type_dependent_expression_p): Strip any location wrapper
3370         before testing tree codes.
3371         (selftest::test_type_dependent_expression_p): New function.
3372         (selftest::cp_pt_c_tests): Call it.
3374 2018-01-17  Nathan Sidwell  <nathan@acm.org>
3376         PR c++/83739
3377         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
3378         this not a final instantiation.
3380 2018-01-16  Jason Merrill  <jason@redhat.com>
3382         PR c++/83714 - ICE checking return in template.
3383         * typeck.c (check_return_expr): Call build_non_dependent_expr.
3385 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
3387         PR c++/83817
3388         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
3389         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
3390         instead of CALL_FROM_THUNK_P.
3392         PR c++/83825
3393         * name-lookup.c (member_vec_dedup): Return early if len is 0.
3394         (resort_type_member_vec, set_class_bindings,
3395         insert_late_enum_def_bindings): Use vec qsort method instead of
3396         calling qsort directly.
3398 2018-01-15  Martin Sebor  <msebor@redhat.com>
3400         PR c++/83588
3401         * class.c (find_flexarrays): Make a record of multiple flexible array
3402         members.
3404 2018-01-12  Jason Merrill  <jason@redhat.com>
3406         PR c++/83186 - ICE with static_cast of list-initialized temporary.
3407         * typeck.c (build_static_cast): Use build_non_dependent_expr.
3409 2018-01-12  Nathan Sidwell  <nathan@acm.org>
3411         * cp-tree.h (mark_rvalue_use): Add parm name.
3412         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
3413         mark_rvalue_use.
3414         * call.c (convert_like_real): Fix formatting.
3416 2018-01-11  Jason Merrill  <jason@redhat.com>
3418         PR c++/82728 - wrong -Wunused-but-set-variable
3419         PR c++/82799
3420         PR c++/83690
3421         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
3422         * decl.c (case_conversion): Likewise.
3423         * semantics.c (finish_static_assert): Call
3424         perform_implicit_conversion_flags.
3426 2018-01-11  Nathan Sidwell  <nathan@acm.org>
3428         * method.c (enum mangling_flags): Delete long-dead enum.
3430 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
3432         * parser.c (cp_parser_std_attribute_spec): When
3433         token_pair::require_open / require_close return false simply
3434         return error_mark_node, avoid duplicate cp_parser_error about
3435         expected '(' / ')', respectively.
3437 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
3439         PR c++/43486
3440         * call.c (null_ptr_cst_p): Strip location wrappers when
3441         converting from '0' to a pointer type in C++11 onwards.
3442         (conversion_null_warnings): Replace comparison with null_node with
3443         call to null_node_p.
3444         (build_over_call): Likewise.
3445         * cp-gimplify.c (cp_fold): Remove the early bailout when
3446         processing_template_decl.
3447         * cp-lang.c (selftest::run_cp_tests): Call
3448         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
3449         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
3450         (selftest::run_cp_tests): Move decl to bottom of file.
3451         (null_node_p): New inline function.
3452         (selftest::cp_pt_c_tests): New decl.
3453         (selftest::cp_tree_c_tests): New decl.
3454         * cvt.c (build_expr_type_conversion): Replace comparison with
3455         null_node with call to null_node_p.
3456         * error.c (args_to_string): Likewise.
3457         * except.c (build_throw): Likewise.
3458         * mangle.c (write_expression): Skip location wrapper nodes.
3459         * parser.c (literal_integer_zerop): New function.
3460         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
3461         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
3462         param of cp_parser_parenthesized_expression_list.  When calling
3463         warn_for_memset, replace integer_zerop calls with
3464         literal_integer_zerop, eliminating the double logical negation
3465         cast to bool.  Eliminate the special-casing for CONST_DECL in
3466         favor of the fold_for_warn within warn_for_memset.
3467         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
3468         param, defaulting to false.  Convert "expr" to a cp_expr, and call
3469         maybe_add_location_wrapper on it when wrap_locations_p is true.
3470         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
3471         the result for RID_ALIGNOF and RID_SIZEOF.
3472         (cp_parser_builtin_offsetof): Likewise.
3473         * pt.c: Include "selftest.h".
3474         (tsubst_copy): Handle location wrappers.
3475         (tsubst_copy_and_build): Likewise.
3476         (build_non_dependent_expr): Likewise.
3477         (selftest::test_build_non_dependent_expr): New function.
3478         (selftest::cp_pt_c_tests): New function.
3479         * tree.c: Include "selftest.h".
3480         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
3481         (selftest::test_lvalue_kind): New function.
3482         (selftest::cp_tree_c_tests): New function.
3483         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
3484         (cp_build_binary_op): Replace comparison with null_node with call
3485         to null_node_p.
3486         (build_address): Use location of operand when building address
3487         expression.
3489 2018-01-10  Marek Polacek  <polacek@redhat.com>
3491         PR c++/82541
3492         * call.c (build_conditional_expr_1): Check complain before warning.
3493         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
3494         -Wduplicated-branches.
3496 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
3498         PR c++/81327
3499         * call.c (maybe_warn_class_memaccess): Add forward declaration.
3500         Change last argument from tree * to const vec<tree, va_gc> *, adjust
3501         args uses and check number of operands too.  Don't strip away any
3502         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
3503         Deal with src argument not having pointer type.  Check
3504         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
3505         test.
3506         (build_over_call): Call maybe_warn_class_memaccess here on the
3507         original arguments.
3508         (build_cxx_call): Rather than here on converted arguments.
3510 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
3512         PR c++/81055
3513         * init.c (build_vec_init): Avoid building an INIT_EXPR with
3514         error_mark_node as second argument.
3516 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
3518         PR c++/83734
3519         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
3520         in STATEMENT_LIST.  Remove unneeded assert.
3522 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
3523             Alan Hayward  <alan.hayward@arm.com>
3524             David Sherwood  <david.sherwood@arm.com>
3526         * constexpr.c (cxx_eval_array_reference): Handle polynomial
3527         VECTOR_CST_NELTS.
3528         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
3529         * call.c (build_conditional_expr_1): Likewise.
3530         * decl.c (cp_finish_decomp): Likewise.
3531         * mangle.c (write_type): Likewise.
3532         * typeck.c (structural_comptypes): Likewise.
3533         (cp_build_binary_op): Likewise.
3534         * typeck2.c (process_init_constructor_array): Likewise.
3536 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
3538         PR c++/83555
3539         * typeck.c (build_static_cast_1): For static casts to reference types,
3540         call build_base_path with flag_delete_null_pointer_checks as nonnull
3541         instead of always false.  When -fsanitize=null, call
3542         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
3543         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
3544         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
3546 2018-01-03  Nathan Sidwell  <nathan@acm.org>
3548         PR c++/83667
3549         * method.c (make_alias_for): Copy DECL_CONTEXT.
3551 2018-01-03  Marek Polacek  <polacek@redhat.com>
3553         PR c++/83592
3554         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
3556 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
3558         PR preprocessor/83602
3559         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
3560         for builtin macros.
3562         PR c++/83634
3563         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
3564         error_mark_node, return error_mark_node.
3566         Update copyright years.
3568 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
3570         PR c++/83556
3571         * tree.c (replace_placeholders_r): Pass NULL as last argument to
3572         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
3573         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
3574         to false and return.
3575         (replace_placeholders): Pass NULL instead of &pset as last argument
3576         to cp_walk_tree.
3578 2018-01-02  Nathan Sidwell  <nathan@acm.org>
3580         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
3581         lval var.
3583 Copyright (C) 2018 Free Software Foundation, Inc.
3585 Copying and distribution of this file, with or without modification,
3586 are permitted in any medium without royalty provided the copyright
3587 notice and this notice are preserved.