re PR sanitizer/89869 (-fsanitize=undefined miscompilation)
[official-gcc.git] / gcc / cp / ChangeLog
bloba31e4391e211f2c74b74b4858849d190eee9d51a
1 2019-03-29  Jakub Jelinek  <jakub@redhat.com>
3         PR sanitizer/89869
4         * typeck.c: Include gimplify.h.
5         (cp_build_modify_expr) <case COND_EXPR>: Unshare rhs before using it
6         for second time.  Formatting fixes.
8 2019-03-29  Marek Polacek  <polacek@redhat.com>
10         PR c++/89876 - ICE with deprecated conversion.
11         * call.c (convert_like_real): Only give warnings with tf_warning.
13 2019-03-28  Marek Polacek  <polacek@redhat.com>
15         PR c++/89612 - ICE with member friend template with noexcept.
16         * pt.c (maybe_instantiate_noexcept): For function templates, use their
17         template result (function decl).  Don't set up local specializations.
18         Temporarily turn on processing_template_decl.  Update the template type
19         too.
21         PR c++/89836 - bool constant expression and explicit conversions.
22         * call.c (build_converted_constant_expr_internal): New function,
23         renamed from...
24         (build_converted_constant_expr): ...this.  New.
25         (build_converted_constant_bool_expr): New.
26         * cp-tree.h (build_converted_constant_bool_expr): Declare.
27         * decl.c (build_explicit_specifier): Call
28         build_converted_constant_bool_expr.
30 2019-03-28  Jakub Jelinek  <jakub@redhat.com>
32         PR c++/89785
33         * constexpr.c (struct check_for_return_continue_data): New type.
34         (check_for_return_continue): New function.
35         (potential_constant_expression_1) <case SWITCH_STMT>: Walk
36         SWITCH_STMT_BODY to find RETURN_EXPRs or CONTINUE_STMTs not nested
37         in loop bodies and set *jump_target to that if found.
39 2019-03-27  Jason Merrill  <jason@redhat.com>
41         PR c++/89831 - error with qualified-id in const member function.
42         * semantics.c (finish_non_static_data_member): Use object cv-quals
43         in scoped case, too.
45         PR c++/89421 - ICE with lambda in template parameter list.
46         * parser.c (cp_parser_lambda_expression): Also reject a lambda in a
47         template parameter list before C++20.
48         * pt.c (type_dependent_expression_p): True for LAMBDA_EXPR.
49         * semantics.c (begin_class_definition): Restore error about defining
50         non-lambda class in template parm list.
52 2019-03-26  Jason Merrill  <jason@redhat.com>
54         PR c++/86932 - missed SFINAE with empty pack.
55         * pt.c (coerce_template_parms): Don't add an empty pack if
56         tf_partial.
57         (fn_type_unification): Pass tf_partial to coerce_template_parms.
59         PR c++/86429 - constexpr variable in lambda.
60         PR c++/82643
61         PR c++/87327
62         * constexpr.c (cxx_eval_constant_expression): In a lambda function,
63         try evaluating the captured variable directly.
65 2019-03-26  Jakub Jelinek  <jakub@redhat.com>
67         PR c++/89796
68         * semantics.c (finish_omp_atomic): Add warning_sentinel for
69         -Wunused-value around finish_expr_stmt call.
71 2019-03-25  Paolo Carlini  <paolo.carlini@oracle.com>
73         PR c++/84661
74         PR c++/85013
75         * parser.c (cp_parser_binary_expression): Don't call cp_fully_fold
76         to undo the disabling of warnings.
78 2019-03-25  Jason Merrill  <jason@redhat.com>
80         PR c++/87748 - substitution failure error with decltype.
81         * pt.c (most_specialized_partial_spec): Clear
82         processing_template_decl.
84 2019-03-25  Marek Polacek  <polacek@redhat.com>
86         PR c++/89214 - ICE when initializing aggregates with bases.
87         * typeck2.c (digest_init_r): Warn about object slicing instead of
88         crashing.
90         PR c++/89705 - ICE with reference binding with conversion function.
91         * call.c (reference_binding): If the result of the conversion function
92         is a prvalue of non-class type, use the cv-unqualified type.
94 2019-03-25  Nathan Sidwell  <nathan@acm.org>
96         * lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group.
98 2019-03-22  Jakub Jelinek  <jakub@redhat.com>
100         PR c++/60702
101         * cp-tree.h (get_tls_wrapper_fn): Remove declaration.
102         (maybe_get_tls_wrapper_call): Declare.
103         * decl2.c (get_tls_wrapper_fn): Make static.
104         (maybe_get_tls_wrapper_call): New function.
105         * typeck.c (build_class_member_access_expr): Handle accesses to TLS
106         variables.
107         * semantics.c (finish_qualified_id_expr): Likewise.
108         (finish_id_expression_1): Use maybe_get_tls_wrapper_call.
109         * pt.c (tsubst_copy_and_build): Likewise.
111         PR c++/87481
112         * constexpr.c (struct constexpr_ctx): Add constexpr_ops_count member.
113         (cxx_eval_constant_expression): When not skipping, not constant class
114         or location wrapper, increment *ctx->constexpr_ops_count and if it is
115         above constexpr_loop_nest_limit, diagnose failure.
116         (cxx_eval_outermost_constant_expr): Add constexpr_ops_count and
117         initialize ctx.constexpr_ops_count to its address.
118         (is_sub_constant_expr): Likewise.
120 2019-03-21  Jakub Jelinek  <jakub@redhat.com>
122         PR c++/71446
123         * call.c (filed_in_pset): Change pset from hash_set<tree> * to
124         hash_set<tree, true> &, adjust uses accordingly.
125         (build_aggr_conv): Change pset from hash_set<tree> *
126         to hash_set<tree, true>.  Replace goto fail; with return NULL;,
127         adjust pset uses.
129         PR c++/89767
130         * parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
131         variables, check for duplicates in this function.
132         * lambda.c (add_capture): Don't check for duplicates nor use
133         IDENTIFIER_MARKED.
134         (register_capture_members): Don't clear IDENTIFIER_MARKED here.
136 2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
138         PR c++/89571
139         * method.c (after_nsdmi_defaulted_late_checks): Avoid passing
140         error_mark_node to comp_except_specs.
142 2019-03-20  Jason Merrill  <jason@redhat.com>
144         PR c++/87480 - decltype of member access in default template arg
145         * pt.c (type_unification_real): Accept a dependent result in
146         template context.
148 2019-03-19  Martin Sebor  <msebor@redhat.com>
150         PR tree-optimization/89688
151         * typeck2.c (store_init_value): Call braced_lists_to_string for more
152         kinds of initializers.
154 2019-03-18  Jason Merrill  <jason@redhat.com>
156         PR c++/89630 - ICE with dependent using-decl as template arg.
157         * tree.c (cp_tree_equal): Always return false for USING_DECL.
159         PR c++/89761 - ICE with sizeof... in pack expansion.
160         * pt.c (argument_pack_element_is_expansion_p): Handle
161         ARGUMENT_PACK_SELECT.
163         PR c++/89640 - GNU attributes on lambda.
164         * parser.c (cp_parser_lambda_declarator_opt): Allow GNU attributes.
166         PR c++/89682 - wrong access error in default argument.
167         * pt.c (tsubst_default_argument): Don't defer access checks.
169 2019-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
171         PR c++/85014
172         * semantics.c (finish_non_static_data_member): Check return value
173         of context_for_name_lookup and immediately return error_mark_node
174         if isn't a type.
176 2019-03-17  Jason Merrill  <jason@redhat.com>
178         PR c++/89571 - ICE with ill-formed noexcept on constructor.
179         * pt.c (maybe_instantiate_noexcept): Only return false if defaulted.
180         (regenerate_decl_from_template): Use it for noexcept-specs.
182 2019-03-14  Jason Merrill  <jason@redhat.com>
184         * parser.c (cp_parser_decl_specifier_seq): Support C++20
185         concept-definition syntax without 'bool'.
187 2019-03-14  Jakub Jelinek  <jakub@redhat.com>
189         PR c++/89512
190         * semantics.c (finish_qualified_id_expr): Reject variable templates.
192         PR c++/89652
193         * constexpr.c (struct constexpr_ctx): Change save_exprs type from
194         hash_set<tree> to vec<tree>.
195         (cxx_eval_call_expression): Adjust for save_exprs being a vec instead
196         of hash_set.
197         (cxx_eval_loop_expr): Likewise.  Truncate the vector after each
198         removal of SAVE_EXPRs from values.
199         (cxx_eval_constant_expression) <case SAVE_EXPR>: Call safe_push
200         method on save_exprs instead of add.
202 2019-03-13  Jason Merrill  <jason@redhat.com>
204         PR c++/86521 - C++17 copy elision in initialization by constructor.
205         * call.c (joust_maybe_elide_copy): New.
206         (joust): Call it.
208 2019-03-13  Marek Polacek  <polacek@redhat.com>
210         PR c++/88979 - further P0634 fix for constructors.
211         * parser.c (cp_parser_decl_specifier_seq): Pass flags to
212         cp_parser_constructor_declarator_p.
213         (cp_parser_direct_declarator): Allow missing typename for constructor
214         parameters.
215         (cp_parser_constructor_declarator_p): Add FLAGS parameter.  Pass it to
216         cp_parser_type_specifier.
218         PR c++/89686 - mixing init-capture and simple-capture in lambda.
219         * parser.c (cp_parser_lambda_introducer): Give error when combining
220         init-capture and simple-capture.
222         PR c++/89660 - bogus error with -Wredundant-move.
223         * typeck.c (maybe_warn_pessimizing_move): Only accept (T &) &arg
224         as the std::move's argument.  Don't call convert_for_initialization
225         when warn_redundant_move isn't on.
227 2019-03-11  Jason Merrill  <jason@redhat.com>
229         PR c++/86521 - wrong overload resolution with ref-qualifiers.
230         * call.c (build_user_type_conversion_1): Don't use a conversion to a
231         reference of the wrong rvalueness for direct binding.
233 2019-03-11  Martin Liska  <mliska@suse.cz>
235         * cvt.c (build_expr_type_conversion): Wrap apostrophes
236         in gcc internal format with %'.
237         * decl.c (check_no_redeclaration_friend_default_args): Likewise.
238         (grokfndecl): Likewise.
239         * name-lookup.c (do_pushtag): Likewise.
240         * pt.c (unify_parameter_deduction_failure): Likewise.
241         (unify_template_deduction_failure): Likewise.
243 2019-03-11  Martin Liska  <mliska@suse.cz>
245         * call.c (convert_arg_to_ellipsis): Wrap an option name
246         in a string format message and fix GNU coding style.
247         (build_over_call): Likewise.
248         * class.c (check_field_decl): Likewise.
249         (layout_nonempty_base_or_field): Likewise.
250         * constexpr.c (cxx_eval_loop_expr): Likewise.
251         * cvt.c (type_promotes_to): Likewise.
252         * decl.c (cxx_init_decl_processing): Likewise.
253         (mark_inline_variable): Likewise.
254         (grokdeclarator): Likewise.
255         * decl2.c (record_mangling): Likewise.
256         * error.c (maybe_warn_cpp0x): Likewise.
257         * except.c (doing_eh): Likewise.
258         * mangle.c (maybe_check_abi_tags): Likewise.
259         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
260         (cp_parser_userdef_numeric_literal): Likewise.
261         (cp_parser_primary_expression): Likewise.
262         (cp_parser_unqualified_id): Likewise.
263         (cp_parser_pseudo_destructor_name): Likewise.
264         (cp_parser_builtin_offsetof): Likewise.
265         (cp_parser_lambda_expression): Likewise.
266         (cp_parser_lambda_introducer): Likewise.
267         (cp_parser_lambda_declarator_opt): Likewise.
268         (cp_parser_selection_statement): Likewise.
269         (cp_parser_init_statement): Likewise.
270         (cp_parser_decomposition_declaration): Likewise.
271         (cp_parser_function_specifier_opt): Likewise.
272         (cp_parser_static_assert): Likewise.
273         (cp_parser_simple_type_specifier): Likewise.
274         (cp_parser_namespace_definition): Likewise.
275         (cp_parser_using_declaration): Likewise.
276         (cp_parser_ctor_initializer_opt_and_function_body): Likewise.
277         (cp_parser_initializer_list): Likewise.
278         (cp_parser_type_parameter_key): Likewise.
279         (cp_parser_member_declaration): Likewise.
280         (cp_parser_try_block): Likewise.
281         (cp_parser_std_attribute_spec): Likewise.
282         (cp_parser_requires_clause_opt): Likewise.
283         * pt.c (check_template_variable): Likewise.
284         (check_default_tmpl_args): Likewise.
285         (push_tinst_level_loc): Likewise.
286         (instantiate_pending_templates): Likewise.
287         (invalid_nontype_parm_type_p): Likewise.
288         * repo.c (get_base_filename): Likewise.
289         * rtti.c (typeid_ok_p): Likewise.
290         (build_dynamic_cast_1): Likewise.
291         * tree.c (maybe_warn_parm_abi): Likewise.
293 2019-03-08  Jakub Jelinek  <jakub@redhat.com>
295         PR other/80058
296         * parser.c (cp_parser_template_declaration_after_parameters): Avoid
297         one space before " at the end of line and another after " on another
298         line in a string literal.
300         PR tree-optimization/89550
301         * semantics.c (maybe_convert_cond): Only set TREE_NO_WARNING if
302         warning_at returned true.
303         * decl2.c (c_parse_final_cleanups): Likewise.
304         * typeck.c (convert_for_assignment): Likewise.
305         * decl.c (finish_function): Likewise.
307         PR c++/89585
308         * parser.c (cp_parser_asm_definition): Just warn instead of error
309         on volatile qualifier outside of function body.
311         PR c++/89599
312         * constexpr.c (potential_constant_expression_1): Reject
313         REINTERPRET_CAST_P NOP_EXPRs.
315         PR c++/89622
316         * call.c (joust): Call print_z_candidate only if pedwarn returned
317         true.
319 2019-03-07  Jason Merrill  <jason@redhat.com>
321         PR c++/88123 - lambda and using-directive.
322         * name-lookup.c (op_unqualified_lookup)
323         (maybe_save_operator_binding, discard_operator_bindings)
324         (push_operator_bindings): New.
325         * typeck.c (build_x_binary_op, build_x_unary_op): Call
326         maybe_save_operator_binding.
327         * decl.c (start_preparsed_function): Call push_operator_bindings.
328         * tree.c (cp_free_lang_data): Call discard_operator_bindings.
330         PR c++/88820 - ICE with CTAD and member template used in DMI.
331         * pt.c (do_class_deduction): Handle parm used as its own arg.
333 2019-03-07  Jakub Jelinek  <jakub@redhat.com>
335         PR c++/89585
336         * parser.c (cp_parser_asm_definition): Parse asm qualifiers even
337         at toplevel, but diagnose them.
339 2019-03-06  Jason Merrill  <jason@redhat.com>
341         PR c++/89381 - implicit copy and using-declaration.
342         * class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider
343         op= brought in by a using-declaration.
345 2019-03-06  Jakub Jelinek  <jakub@redhat.com>
347         PR c++/87148
348         * init.c (build_value_init_noctor): Ignore flexible array members.
350 2019-03-06  Jason Merrill  <jason@redhat.com>
352         PR c++/89576 - if constexpr of lambda capture.
353         * semantics.c (maybe_convert_cond): Do convert a non-dependent
354         condition in a template.
355         * typeck.c (condition_conversion): Handle being called in a
356         template.
358 2019-03-06  Marek Polacek  <polacek@redhat.com>
360         PR c++/87378 - bogus -Wredundant-move warning.
361         * typeck.c (maybe_warn_pessimizing_move): See if the maybe-rvalue
362         overload resolution would actually succeed.
364 2019-03-05  Jason Merrill  <jason@redhat.com>
366         * class.c (is_really_empty_class): Add ignore_vptr parm.
367         (trivial_default_constructor_is_constexpr): Pass it.
368         * call.c (build_over_call): Pass it.
369         * constexpr.c (cxx_eval_constant_expression): Pass it instead of
370         checking TYPE_POLYMORPHIC_P.
371         (cxx_eval_component_reference, potential_constant_expression_1):
372         Pass it.
373         * cp-gimplify.c (simple_empty_class_p): Pass it.
374         * init.c (expand_aggr_init_1): Pass it.
376 2019-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
378         PR c++/84605
379         * parser.c (cp_parser_class_head): Reject TYPE_BEING_DEFINED too.
381 2019-03-04  Jakub Jelinek  <jakub@redhat.com>
383         PR c++/71446
384         * call.c (field_in_pset): New function.
385         (build_aggr_conv): Handle CONSTRUCTOR_IS_DESIGNATED_INIT correctly.
387 2019-03-02  Jakub Jelinek  <jakub@redhat.com>
389         PR c++/71446
390         * cp-tree.h (CONSTRUCTOR_IS_DESIGNATED_INIT): Define.
391         * parser.c (cp_parser_braced_list): Adjust cp_parser_initializer_list
392         caller, set CONSTRUCTOR_IS_DESIGNATED_INIT.
393         (cp_parser_initializer_list): Add designated parameter, set *designated
394         to a bool whether any designators were parsed.
395         * decl.c (reshape_init): Copy over CONSTRUCTOR_IS_DESIGNATED_INIT if
396         needed.
397         * pt.c (tsubst_copy_and_build): Likewise.
398         * call.c (implicit_conversion): If CONSTRUCTOR_IS_DESIGNATED_INIT,
399         don't call build_list_conv, nor build_complex_conv, nor attempt to
400         convert a single element initializer to scalar.
402 2019-03-01  Marek Polacek  <polacek@redhat.com>
404         PR c++/89537 - missing location for error with non-static member fn.
405         * call.c (resolve_args): Use EXPR_LOCATION.
406         * typeck.c (build_class_member_access_expr): Use input_location.
408         PR c++/89532 - ICE with incomplete type in decltype.
409         * semantics.c (finish_compound_literal): Return error_mark_node
410         if digest_init_flags returns error_mark_node.
412 2019-03-01  Jakub Jelinek  <jakub@redhat.com>
414         Implement P1002R1, Try-catch blocks in constexpr functions
415         PR c++/89513
416         * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
417         Diagnose constexpr ctor or function with function-try-block with
418         pedwarn for c++17 and earlier.  Formatting fix.
419         (cp_parser_try_block): Use pedwarn instead of error and only for
420         c++17 and earlier when try block appears in constexpr function.
421         * constexpr.c (build_constexpr_constructor_member_initializers):
422         Handle TRY_BLOCK here instead of erroring on it.
424 2019-02-28  Jason Merrill  <jason@redhat.com>
426         PR c++/88183 - ICE with .* fold-expression.
427         * pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.
429         PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
430         * class.c, lambda.c, pt.c: Revert earlier change.
431         * lambda.c (add_capture): Don't special-case capture of dependent
432         VLA.
434         * name-lookup.c (print_binding_level): Print this_entity.
436 2019-02-27  Marek Polacek  <polacek@redhat.com>
438         PR c++/88857 - ICE with value-initialization of argument in template.
439         * call.c (convert_like_real): Don't call build_value_init in template.
441 2019-02-27  Jason Merrill  <jason@redhat.com>
443         PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
444         * semantics.c (process_outer_var_ref): Do capture dependent vars.
445         * class.c (finish_struct): Only add TAG_DEFN if T is in
446         current_function_decl.
447         * lambda.c (vla_capture_type): Force the capture type out into the
448         lambda's enclosing function.
449         (add_capture): Pass in the lambda.
450         * pt.c (tsubst_lambda_expr): complete_type a VLA capture type.
452 2019-02-27  Marek Polacek  <polacek@redhat.com>
454         PR c++/89511 - ICE with using-declaration and unscoped enumerator.
455         * parser.c (cp_parser_using_declaration): For an unscoped enum
456         only use its context if it's not a function declaration.
458 2019-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
460         PR c++/89488
461         * method.c (process_subob_fn): When maybe_instantiate_noexcept
462         returns false don't call merge_exception_specifiers.
464 2019-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
466         PR c++/88987
467         * parser.c (cp_parser_noexcept_specification_opt): Return NULL_TREE
468         for a non-constant parsed expression.
470 2019-02-26  Jakub Jelinek  <jakub@redhat.com>
472         PR c++/89481
473         * constexpr.c (cxx_eval_store_expression): When changing active union
474         member, set no_zero_init.
476 2019-02-23  Marek Polacek  <polacek@redhat.com>
478         PR c++/88294 - ICE with non-constant noexcept-specifier.
479         * pt.c (maybe_instantiate_noexcept): Set up the list of local
480         specializations.  Set current_class_{ptr,ref}.
482 2019-02-22  David Malcolm  <dmalcolm@redhat.com>
484         PR c++/89390
485         * parser.c (cp_parser_unqualified_id): Capture and use locations
486         for destructors.
488 2019-02-22  Marek Polacek  <polacek@redhat.com>
490         PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
491         * decl.c (build_explicit_specifier): Don't check
492         processing_template_decl.  Call instantiation_dependent_expression_p
493         instead of value_dependent_expression_p.  Call
494         instantiate_non_dependent_expr_sfinae before
495         build_converted_constant_expr instead of calling
496         instantiate_non_dependent_expr after it.  Add
497         processing_template_decl_sentinel.
499 2019-02-22  Thomas Schwinge  <thomas@codesourcery.com>
501         * parser.c (cp_parser_oacc_simple_clause): Remove parser formal
502         parameter, move loc formal parameter to the front.  Adjust all
503         users.
504         (cp_parser_oacc_shape_clause): Add loc formal parameter.  Adjust
505         all users.
507 2019-02-21  Jason Merrill  <jason@redhat.com>
509         PR c++/87685 - generic lambda 'this' capture error.
510         * lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
511         (maybe_generic_this_capture): Pass -1.
513         PR c++/88394 - ICE with VLA init-capture.
514         * lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.
516         PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
517         * pt.c (do_class_deduction): Don't include explicit specialization
518         args in outer_args.
520         PR c++/89422 - ICE with -g and lambda in default arg in template.
521         * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
523 2019-02-21  Jason Merrill  <jason@redhat.com>
525         PR c++/88419 - C++17 ICE with class template arg deduction.
526         * pt.c (make_template_placeholder): Set TYPE_CANONICAL after
527         CLASS_PLACEHOLDER_TEMPLATE.
529 2019-02-21  Jakub Jelinek  <jakub@redhat.com>
531         PR c++/89285
532         * constexpr.c (struct constexpr_fundef): Add parms and result members.
533         (retrieve_constexpr_fundef): Adjust for the above change.
534         (register_constexpr_fundef): Save constexpr body with copy_fn,
535         temporarily set DECL_CONTEXT on DECL_RESULT before that.
536         (get_fundef_copy): Change FUN argument to FUNDEF with
537         constexpr_fundef * type, grab body and parms/result out of
538         constexpr_fundef struct and temporarily change it for copy_fn calls
539         too.
540         (cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
541         adjust current_function_decl from ctx->call context.  Test
542         !potential_constant_expression instead of !is_constant_expression.
543         (cxx_bind_parameters_in_call): Grab parameters from new_call.  Undo
544         convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
545         (cxx_eval_call_expression): Adjust get_fundef_copy caller.
546         (cxx_eval_conditional_expression): For IF_STMT, allow then or else
547         operands to be NULL.
548         (label_matches): Handle BREAK_STMT and CONTINUE_STMT.
549         (cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
550         (cxx_eval_switch_expr): Add support for SWITCH_STMT.
551         (cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
552         DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
553         For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr.  Ignore
554         DECL_EXPR with USING_DECL operand.
555         * lambda.c (maybe_add_lambda_conv_op): Build thisarg using
556         build_int_cst to make it a valid constant expression.
558 2019-02-20  Jason Merrill  <jason@redhat.com>
560         PR c++/88690 - C++17 ICE with empty base in aggregate.
561         * typeck2.c (process_init_constructor_record): Skip trivial
562         initialization of an empty base.
564 2019-02-21  Richard Biener  <rguenther@suse.de>
566         PR middle-end/89392
567         * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
568         make symtab process new functions here.
570 2019-02-20  Jason Merrill  <jason@redhat.com>
572         PR c++/87921 - wrong error with inline static data member.
573         * decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
574         for a non-template inline variable.  Do nothing for an
575         already-instantiated variable.
576         (c_parse_final_cleanups): Check DECL_IN_AGGR_P without
577         DECL_INLINE_VAR_P.
578         * decl.c (check_initializer): Likewise.
579         (make_rtl_for_nonlocal_decl): Likewise.
580         * pt.c (instantiate_decl): Likewise.
581         * typeck2.c (store_init_value): Likewise.
583 2019-02-20  Jakub Jelinek  <jakub@redhat.com>
585         PR c++/89403
586         * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
587         for flag_syntax_only from here...
588         * semantics.c (expand_or_defer_fn_1): ... here.
590         PR c++/89405
591         * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
592         DECL_COMMON, set DECL_INTERFACE_KNOWN.
594         PR c++/89336
595         * constexpr.c (cxx_eval_store_expression): Diagnose changing of active
596         union member for -std=c++17 and earlier.
598 2019-02-19  Jason Merrill  <jason@redhat.com>
600         PR c++/87513 - 'sorry' mangling PMF template-id.
601         * mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
603 2019-02-19  Jason Merrill  <jason@redhat.com>
605         PR c++/88380 - wrong-code with flexible array and NSDMI.
606         * typeck2.c (process_init_constructor_record): Skip flexarrays.
608 2019-02-20  will wray  <wjwray@gmail.com>
610         PR c++/88572 - wrong handling of braces on scalar init.
611         * decl.c (reshape_init_r): Allow braces around scalar initializer
612         within aggregate init.  Reject double braced-init of scalar
613         variable.
615 2019-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
617         PR c++/84536
618         * pt.c (tsubst_init): Diagnose an initializer expanding to an
619         empty list of expressions; tweak wrt dependent types.
620         (regenerate_decl_from_template): For VAR_DECLs call tsubst_init
621         instead of tsubst_expr.
623 2019-02-19  Jason Merrill  <jason@redhat.com>
625         PR c++/88368 - wrong 'use of deleted function'
626         * method.c (walk_field_subobs): Remember errors from get_nsdmi.
627         (get_defaulted_eh_spec): Call push_tinst_level.
628         * pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
629         * typeck2.c (merge_exception_specifiers): Handle error_mark_node.
631 2019-02-19  Chung-Lin Tang <cltang@codesourcery.com>
633         PR c/87924
634         * parser.c (cp_parser_oacc_clause_wait): Add representation of wait
635         clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
637 2019-02-19  Jakub Jelinek  <jakub@redhat.com>
639         PR c++/89387
640         * lambda.c (maybe_generic_this_capture): Don't check
641         DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
643         PR c++/89391
644         * typeck.c (build_reinterpret_cast_1): Don't handle void to
645         && conversion go through build_target_expr_with_type.
647         PR c++/89390
648         * error.c (qualified_name_lookup_error): Only call
649         suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
651 2019-02-19  Tom Honermann  <tom@honermann.net>
653         * name-lookup.c (get_std_name_hint): Added u8string as a name hint.
655 2019-02-18  Jason Merrill  <jason@redhat.com>
657         PR c++/89336 - multiple stores in constexpr stmt.
658         * constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
659         assigned value.
661         * pt.c (check_explicit_specialization): If the declarator is a
662         template-id, only check whether the arguments are dependent.
664         Improve duplicate [[likely]] diagnostic.
665         * parser.c (cp_parser_statement): Make attrs_loc a range.  Pass it
666         to process_stmt_hotness_attribute.
667         * cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
668         (genericize_if_stmt): Use likely/unlikely instead of predictor_name.
670 2019-02-17  Marek Polacek  <polacek@redhat.com>
672         PR c++/89217 - ICE with list-initialization in range-based for loop.
673         * constexpr.c (unshare_constructor): No longer static.
674         * cp-tree.h (unshare_constructor): Declare.
675         * semantics.c (finish_compound_literal): When dealing with a
676         non-dependent expression in a template, return the original
677         expression.  Pass LOOKUP_NO_NARROWING to digest_init_flags.
679 2019-02-13  Marek Polacek  <polacek@redhat.com>
681         PR c++/89297 - ICE with OVERLOAD in template.
682         * semantics.c (finish_compound_literal): Call
683         instantiate_non_dependent_expr_sfinae.
685 2019-02-13  Alexandre Oliva <aoliva@redhat.com>
687         PR c++/86379
688         * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
689         * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
690         * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
691         (shared_member_p): Likewise.
692         (lookup_member): Likewise.
693         * decl.c (grok_special_member_properties): Skip USING_DECLs.
694         * semantics.c (finish_omp_declare_simd_methods): Likewise.
695         (finish_qualified_id_expr): Do not call shared_member_p with
696         a dependent expr.
698         PR c++/87322
699         * pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
700         Move cp_evaluated resetting before signature tsubsting.
701         (gen_elem_of_pack_expansion_instantiation): Separate local
702         specializations per index.
704 2019-02-13  David Malcolm  <dmalcolm@redhat.com>
706         PR c++/89036
707         * class.c (add_method): Drop destructor assertion.
709 2019-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
711         PR c++/88986
712         * decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
713         context (the first argument).
714         * pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
715         as context.
717 2019-02-12  Jason Merrill  <jason@redhat.com>
719         PR c++/89144 - link error with constexpr initializer_list.
720         * call.c (convert_like_real) [ck_list]: Don't allocate a temporary
721         array for an empty list.
722         * typeck2.c (store_init_value): Don't use cxx_constant_init in a
723         template.
725 2019-02-11  Jason Merrill  <jason@redhat.com>
727         PR c++/89241 - ICE with __func__ in lambda in template.
728         * pt.c (enclosing_instantiation_of): Also check
729         instantiated_lambda_fn_p for the template context.
731 2019-02-11  Marek Polacek  <polacek@redhat.com>
733         PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
734         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
735         null member pointer value.
737 2019-02-11  Jakub Jelinek  <jakub@redhat.com>
739         PR c++/88977
740         * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
741         to maybe_constant_value calls.
743 2019-02-11  Marek Polacek  <polacek@redhat.com>
745         * typeck2.c (digest_init_r): Remove commented code.
747 2019-02-11  Martin Sebor  <msebor@redhat.com>
749         PR c++/87996
750         * decl.c (compute_array_index_type_loc): Preserve signed sizes
751         for diagnostics.  Call valid_array_size_p instead of error.
752         * init.c (build_new_1): Compute size for diagnostic.  Call
753         invalid_array_size_error
754         (build_new): Call valid_array_size_p instead of error.
756 2019-02-07  Alexandre Oliva <aoliva@redhat.com>
758         PR c++/86218
759         * call.c (compare_ics): Deal with ck_aggr in either cs.
761 2019-02-06  David Malcolm  <dmalcolm@redhat.com>
763         PR c++/71302
764         * call.c (get_location_for_expr_unwinding_for_system_header): New
765         function.
766         (conversion_null_warnings): Use it when getting locations for
767         EXPR, effectively adding a call to
768         get_location_for_expr_unwinding_for_system_header for
769         -Wconversion-null and making use of EXPR_LOCATION for
770         -Wzero-as-null-pointer-constant.
772 2019-02-05  Jakub Jelinek  <jakub@redhat.com>
774         PR c++/89187
775         * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
776         PARM_DECLs of the thunk.
777         * lambda.c (maybe_add_lambda_conv_op): Likewise.
779 2019-02-05  Marek Polacek  <polacek@redhat.com>
781         PR c++/89158 - by-value capture of constexpr variable broken.
782         * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
783         instead of mark_rvalue_use.
785 2019-02-05  Alexandre Oliva <aoliva@redhat.com>
787         PR c++/87770
788         * pt.c (instantiates_primary_template_p): New.
789         (type_dependent_expression_p): Use it.
791 2019-02-01  Jason Merrill  <jason@redhat.com>
793         PR c++/88761 - ICE with reference capture of constant.
794         * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
795         non-proxy decls.
797 2019-02-01  Marek Polacek  <polacek@redhat.com>
799         PR c++/88325 - ICE with invalid out-of-line template member definition.
800         * parser.c (cp_parser_class_name): Don't call make_typename_type
801         for overloads.
803 2019-02-01  Jakub Jelinek  <jakub@redhat.com>
805         PR c++/87175
806         * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
807         if require_open failed.
809 2019-01-31  Marek Polacek  <polacek@redhat.com>
811         PR c++/89083, c++/80864 - ICE with list initialization in template.
812         * constexpr.c (adjust_temp_type): Use copy_node and change the type
813         instead of using build_constructor.
814         * decl.c (reshape_init_r): Don't reshape a digested initializer.
815         Return the initializer for COMPOUND_LITERAL_P.
817         PR c++/88983 - ICE with switch in constexpr function.
818         * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
819         (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
820         label in the else branch if we found it in the then branch.
822 2019-01-30  Jason Merrill  <jason@redhat.com>
824         PR c++/88752 - ICE with lambda and constexpr if.
825         * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
826         * pt.c (tsubst_lambda_expr): Set it.
827         (instantiated_lambda_fn_p): Check it.
828         (enclosing_instantiation_of): Use it.
830 2019-01-31  Jakub Jelinek  <jakub@redhat.com>
832         PR libstdc++/88170
833         * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
834         a C cast in pp_c_flag_gnu_v3 mode.
836 2019-01-30  Jakub Jelinek  <jakub@redhat.com>
838         PR c++/88988
839         * lambda.c (is_capture_proxy): Don't return true for
840         DECL_OMP_PRIVATIZED_MEMBER artificial vars.
842 2019-01-30  Marek Polacek  <polacek@redhat.com>
844         PR c++/89119 - ICE with value-initialization in template.
845         * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
847 2019-01-29  Jason Merrill  <jason@redhat.com>
849         PR c++/86943 - wrong code converting lambda to function pointer.
850         * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
851         call.  Only forward parms for decltype.
852         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
853         specially.
854         * typeck.c (check_return_expr): Don't mess with a thunk call.
856 2019-01-28  Jason Merrill  <jason@redhat.com>
858         PR c++/89089 - ICE with [[no_unique_address]].
859         PR c++/88865 - wrong layout with [[no_unique_address]].
860         * class.c (check_field_decls): A potentially-overlapping field makes
861         the class non-layout-POD, but not non-empty.
862         (end_of_class): Always consider empty data members.
863         (layout_class_type): Set DECL_SIZE for empty fields.
865 2019-01-28  Marek Polacek  <polacek@redhat.com>
867         PR c++/88358 - name wrongly treated as type.
868         * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
869         in parameter-list is a type if the function's declarator-id is not
870         qualified.
872 2019-01-27  Marek Polacek  <polacek@redhat.com>
874         PR c++/88815 - narrowing conversion lost in decltype.
875         PR c++/78244 - narrowing conversion in template not detected.
876         * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
877         * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
878         CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
879         * semantics.c (finish_compound_literal): When the compound literal
880         isn't instantiation-dependent and the type isn't type-dependent,
881         fall back to the normal processing.  Set CONSTRUCTOR_IS_DEPENDENT.
883         PR c++/89024 - ICE with incomplete enum type.
884         * call.c (standard_conversion): When converting an
885         ARITHMETIC_TYPE_P to an incomplete type, return NULL.
886         
887 2019-01-25  Paolo Carlini  <paolo.carlini@oracle.com>
889         PR c++/88969
890         * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
891         * decl2.c (coerce_delete_type): Use build_pointer_type instead
892         of TYPE_POINTER_TO.
894 2019-01-24  Jason Merrill  <jason@redhat.com>
896         PR c++/89001 - mangling of reference temporaries
897         * cp-tree.h (struct saved_scope): Add ref_temp_count.
898         (current_ref_temp_count): New macro.
899         * mangle.c (mangle_ref_init_variable): Use it.
900         * typeck2.c (store_init_value): Clear it.
901         * call.c (make_temporary_var_for_ref_to_temp): Copy public and
902         comdat.
904 2019-01-24  Jakub Jelinek  <jakub@redhat.com>
906         PR c++/88976
907         * semantics.c (finish_omp_cancel): Diagnose more than one if
908         on #pragma omp cancel with different modifiers.  Use
909         maybe_convert_cond when not in template or build_x_binary_op
910         otherwise.
912 2019-01-23  Marek Polacek  <polacek@redhat.com>
914         PR c++/88757 - qualified name treated wrongly as type.
915         * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
916         in parameter-list as types if name lookup for declarator-id didn't
917         find one or more function templates.
919 2019-01-23  Jakub Jelinek  <jakub@redhat.com>
921         PR c/44715
922         * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
923         after genericizing cond and incr expressions.
925         PR c++/88984
926         * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
927         before the begin_bc_block call.
929 2019-01-21  Jason Merrill  <jason@redhat.com>
931         PR c++/87893 - constexpr ctor ICE on ARM.
932         PR c++/88293 - ICE with comma expression.
933         * constexpr.c (initialized_type): Don't shortcut non-void type.
934         Handle COMPOUND_EXPR.
935         (cxx_eval_outermost_constant_expr): Return early for void type.
937 2019-01-21  Jakub Jelinek  <jakub@redhat.com>
939         PR c++/88949
940         * optimize.c (cxx_copy_decl): New function.
941         (clone_body): Use it instead of copy_decl_no_change.
943         PR sanitizer/88901
944         * typeck.c (cp_build_binary_op): Don't instrument
945         SANITIZE_POINTER_COMPARE if processing_template_decl.
946         (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
948 2019-01-18  Jason Merrill  <jason@redhat.com>
950         PR c++/88875 - error with explicit list constructor.
951         * call.c (reference_binding): Don't modify EXPR.  Set
952         need_temporary_p on the ck_user conversion for a temporary.
953         (convert_like_real): Check it.
955 2019-01-18  H.J. Lu  <hongjiu.lu@intel.com>
957         PR c/51628
958         PR c/88664
959         * call.c (convert_for_arg_passing): Upate the
960         warn_for_address_or_pointer_of_packed_member call.
961         * typeck.c (convert_for_assignment): Likewise.
963 2019-01-17  Jason Merrill  <jason@redhat.com>
965         PR c++/86205 - ICE with ?: of throw and template-id.
966         * pt.c (resolve_nondeduced_context_or_error): Split out from...
967         * typeck.c (decay_conversion): ...here.
968         * call.c (build_conditional_expr_1): Use it.
970         PR c++/86740, ICE with constexpr if and nested generic lambdas.
971         * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
973 2019-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
975         * decl.c (grokdeclarator): Use typespec_loc in error messages
976         about 'auto' and trailing return type.
978 2019-01-17  David Malcolm  <dmalcolm@redhat.com>
980         PR c++/88699
981         * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
982         USING_DECLs.
984 2019-01-17  Nathan Sidwell  <nathan@acm.org>
986         PR c++/86610
987         * semantics.c (process_outer_var_ref): Only skip dependent types
988         in templates.
990 2019-01-17  Alexandre Oliva <aoliva@redhat.com>
992         PR c++/87768
993         * cp-tree.h (saved_scope): Add suppress_location_wrappers.
994         * name-lookup.c (do_push_to_top_level): Save and reset it.
995         (do_pop_from_top_level): Restore it.
997         PR c++/86648
998         * pt.c (make_template_placeholder): Use auto_identifier.
999         (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
1000         * error.c (dump_type): Handle template placeholders.
1001         * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
1003         PR c++/88146
1004         * cvt.c (convert_to_void): Handle all cdtor calls as if
1005         returning void.
1007 2019-01-16  Paolo Carlini  <paolo.carlini@oracle.com>
1009         * decl.c (grokdeclarator): Use locations[ds_storage_class] in
1010         error messages about ill-formed uses of mutable.
1012 2019-01-16  Marek Polacek  <polacek@redhat.com>
1014         PR c++/78244 - narrowing conversion in template not detected.
1015         * call.c (perform_implicit_conversion_flags): Set
1016         IMPLICIT_CONV_EXPR_BRACED_INIT.
1017         * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
1018         * pt.c (tsubst_copy_and_build): Use it.
1020 2019-01-15  David Malcolm  <dmalcolm@redhat.com>
1022         PR c++/88795
1023         * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
1024         fails.
1026 2019-01-15  Paolo Carlini  <paolo.carlini@oracle.com>
1028         * decl.c (start_decl): Improve error location.
1029         * decl2.c (grokfield): Likewise.
1031 2019-01-15  Paolo Carlini  <paolo.carlini@oracle.com>
1033         * decl.c (grokdeclarator): Move further up the location_t loc
1034         declaration and use the location when building a TYPE_DECL for
1035         a typedef name.
1036         * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
1037         about an ill-formed bit-field as typedef.
1039 2019-01-14  Marek Polacek  <polacek@redhat.com>
1041         PR c++/88830 - ICE with abstract class.
1042         * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
1043         Fix formatting.
1045         PR c++/88825 - ICE with bogus function return type deduction.
1046         * typeck.c (can_do_nrvo_p): Check error_mark_node.
1048 2019-01-14  Tom Honermann  <tom@honermann.net>
1050         Implement P0482R5, char8_t: A type for UTF-8 characters and strings
1051         * cvt.c (type_promotes_to): Handle char8_t promotion.
1052         * decl.c (grokdeclarator): Handle invalid type specifier
1053         combinations involving char8_t.
1054         * lex.c (init_reswords): Add char8_t as a reserved word.
1055         * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
1056         * parser.c (cp_keyword_starts_decl_specifier_p)
1057         (cp_parser_simple_type_specifier): Recognize char8_t as a simple
1058         type specifier.
1059         (cp_parser_string_literal): Use char8_array_type_node for the type
1060         of CPP_UTF8STRING.
1061         (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
1062         headers.
1063         * rtti.c (emit_support_tinfos): type_info support for char8_t.
1064         * tree.c (char_type_p): Recognize char8_t as a character type.
1065         * typeck.c (string_conv_p): Handle conversions of u8 string
1066         literals of char8_t type.
1067         (check_literal_operator_args): Handle UDLs with u8 string literals
1068         of char8_t type.
1069         * typeck2.c (ordinary_char_type_p): New.
1070         (digest_init_r): Disallow initializing a char array with a u8 string
1071         literal.
1073 2019-01-14  Martin Liska  <mliska@suse.cz>
1075         PR gcov-profile/88263
1076         * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
1077         as location of the TLS wrapper.
1079 2019-01-12  Paolo Carlini  <paolo.carlini@oracle.com>
1081         * decl.c (cp_finish_decl): Improve error location.
1082         * decl2.c (grokfield): Likewise, improve two locations.
1084 2019-01-11  Marek Polacek  <polacek@redhat.com>
1086         PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
1087         * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
1088         ADDR_EXPR.
1090 2019-01-11  Jason Merrill  <jason@redhat.com>
1092         PR c++/88312 - pack expansion of decltype.
1093         * pt.c (instantiation_dependent_r): A template non-type parameter
1094         pack is instantiation-dependent.
1096 2019-01-11  Jason Merrill  <jason@redhat.com>
1098         PR c++/88613 - ICE with use of const var in lambda.
1099         * expr.c (mark_use): Fix location wrapper handling.
1100         * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
1102 2019-01-11  Tobias Burnus  <burnus@net-b.de>
1104         PR C++/88114
1105         * decl2.c (maybe_emit_vtables): If needed, generate code for
1106         the destructor of an abstract class.
1107         (mark_used): Update comment for older function-name change.
1109 2019-01-11  Paolo Carlini  <paolo.carlini@oracle.com>
1111         * decl.c (start_decl): Improve error location.
1112         (grokdeclarator): Likewise, improve two locations.
1114 2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>
1116         PR other/16615
1118         * cp-tree.h: Mechanically replace "can not" with "cannot".
1119         * parser.c: Likewise.
1120         * pt.c: Likewise.
1122 2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>
1124         * decl.c (grok_reference_init): Improve error location.
1125         (grokdeclarator): Likewise, improve two locations.
1127 2019-01-08  Marek Polacek  <polacek@redhat.com>
1129         PR c++/88538 - braced-init-list in template-argument-list.
1130         * parser.c (cp_parser_template_argument): Handle braced-init-list when
1131         in C++20.
1133         PR c++/88548 - this accepted in static member functions.
1134         * parser.c (cp_debug_parser): Adjust printing of
1135         local_variables_forbidden_p.
1136         (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
1137         (cp_parser_primary_expression): When checking
1138         local_variables_forbidden_p, use THIS_FORBIDDEN or
1139         LOCAL_VARS_FORBIDDEN.
1140         (cp_parser_lambda_body): Update the type of
1141         local_variables_forbidden_p.  Set it to 0 rather than false.
1142         (cp_parser_condition): Adjust call to cp_parser_declarator.
1143         (cp_parser_explicit_instantiation): Likewise.
1144         (cp_parser_init_declarator): Likewise.
1145         (cp_parser_declarator): New parameter.  Use it.
1146         (cp_parser_direct_declarator): New parameter.  Use it to set
1147         local_variables_forbidden_p.  Adjust call to cp_parser_declarator.
1148         (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
1149         (cp_parser_parameter_declaration): Likewise.
1150         (cp_parser_default_argument): Update the type of
1151         local_variables_forbidden_p.  Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
1152         rather than true.
1153         (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
1154         'static' or 'friend'.
1155         (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
1156         (cp_parser_late_parsing_default_args): Update the type of
1157         local_variables_forbidden_p.  Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
1158         rather than true.
1159         (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
1160         (cp_parser_objc_class_ivars): Likewise.
1161         (cp_parser_objc_struct_declaration): Likewise.
1162         (cp_parser_omp_for_loop_init): Likewise.
1163         * parser.h (cp_parser): Change the type of local_variables_forbidden_p
1164         to unsigned char.
1165         (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
1166         Define.
1168 2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>
1170         * decl.c (start_decl): Improve permerror location.
1172 2019-01-08  Jonathan Wakely  <jwakely@redhat.com>
1173             Jakub Jelinek  <jakub@redhat.com>
1175         PR c++/88554
1176         * decl.c (finish_function): For -Wreturn-type don't add a return *this;
1177         fixit hint if current_class_ref is NULL.  Use a single if instead of
1178         two nested ones.
1180 2019-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
1182         * decl.c (start_decl): Improve two error_at locations.
1183         (expand_static_init): Likewise.
1185 2019-01-07  Marek Polacek  <polacek@redhat.com>
1187         PR c++/88741 - wrong error with initializer-string.
1188         * decl.c (cp_complete_array_type): Strip any location wrappers.
1190 2019-01-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1192         PR c++/88261
1193         PR c++/69338
1194         PR c++/69696
1195         PR c++/69697
1196         * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
1197         * typeck2.c (digest_init_r): Raise an error for non-static
1198         initialization of a flexible array member.
1199         (process_init_constructor, massage_init_elt,
1200         process_init_constructor_array, process_init_constructor_record,
1201         process_init_constructor_union, process_init_constructor): Add the
1202         flags parameter and pass it thru.
1203         (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
1204         digest_init_flags for static decls.
1206 2019-01-07  Jakub Jelinek  <jakub@redhat.com>
1208         PR c++/85052
1209         * cp-tree.h (cp_build_vec_convert): Declare.
1210         * parser.c (cp_parser_postfix_expression): Parse
1211         __builtin_convertvector.
1212         * constexpr.c: Include fold-const-call.h.
1213         (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
1214         (potential_constant_expression_1): Likewise.
1215         * semantics.c (cp_build_vec_convert): New function.
1216         * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
1217         IFN_VEC_CONVERT.
1219 2019-01-03  Jakub Jelinek  <jakub@redhat.com>
1221         PR c++/88636
1222         * decl.c (builtin_function_1): Return result of pushdecl_top_level
1223         or pushdecl rather than decl.
1225 2019-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
1227         * tree.c (handle_nodiscard_attribute): Improve warning location.
1229 2019-01-02  Marek Polacek  <polacek@redhat.com>
1231         PR c++/88612 - ICE with -Waddress-of-packed-member.
1232         * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
1233         * typeck.c (convert_for_assignment): Likewise.
1235         PR c++/88631 - CTAD failing for value-initialization.
1236         * typeck2.c (build_functional_cast): Try deducing the template
1237         arguments even if there are no arguments to deduce from.
1239 2019-01-01  Jakub Jelinek  <jakub@redhat.com>
1241         Update copyright years.
1243 Copyright (C) 2019 Free Software Foundation, Inc.
1245 Copying and distribution of this file, with or without modification,
1246 are permitted in any medium without royalty provided the copyright
1247 notice and this notice are preserved.