1 2019-02-11 Jakub Jelinek <jakub@redhat.com>
4 * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
5 to maybe_constant_value calls.
7 2019-02-11 Marek Polacek <polacek@redhat.com>
9 * typeck2.c (digest_init_r): Remove commented code.
11 2019-02-11 Martin Sebor <msebor@redhat.com>
14 * decl.c (compute_array_index_type_loc): Preserve signed sizes
15 for diagnostics. Call valid_array_size_p instead of error.
16 * init.c (build_new_1): Compute size for diagnostic. Call
17 invalid_array_size_error
18 (build_new): Call valid_array_size_p instead of error.
20 2019-02-07 Alexandre Oliva <aoliva@redhat.com>
23 * call.c (compare_ics): Deal with ck_aggr in either cs.
25 2019-02-06 David Malcolm <dmalcolm@redhat.com>
28 * call.c (get_location_for_expr_unwinding_for_system_header): New
30 (conversion_null_warnings): Use it when getting locations for
31 EXPR, effectively adding a call to
32 get_location_for_expr_unwinding_for_system_header for
33 -Wconversion-null and making use of EXPR_LOCATION for
34 -Wzero-as-null-pointer-constant.
36 2019-02-05 Jakub Jelinek <jakub@redhat.com>
39 * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
40 PARM_DECLs of the thunk.
41 * lambda.c (maybe_add_lambda_conv_op): Likewise.
43 2019-02-05 Marek Polacek <polacek@redhat.com>
45 PR c++/89158 - by-value capture of constexpr variable broken.
46 * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
47 instead of mark_rvalue_use.
49 2019-02-05 Alexandre Oliva <aoliva@redhat.com>
52 * pt.c (instantiates_primary_template_p): New.
53 (type_dependent_expression_p): Use it.
55 2019-02-01 Jason Merrill <jason@redhat.com>
57 PR c++/88761 - ICE with reference capture of constant.
58 * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
61 2019-02-01 Marek Polacek <polacek@redhat.com>
63 PR c++/88325 - ICE with invalid out-of-line template member definition.
64 * parser.c (cp_parser_class_name): Don't call make_typename_type
67 2019-02-01 Jakub Jelinek <jakub@redhat.com>
70 * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
71 if require_open failed.
73 2019-01-31 Marek Polacek <polacek@redhat.com>
75 PR c++/89083, c++/80864 - ICE with list initialization in template.
76 * constexpr.c (adjust_temp_type): Use copy_node and change the type
77 instead of using build_constructor.
78 * decl.c (reshape_init_r): Don't reshape a digested initializer.
79 Return the initializer for COMPOUND_LITERAL_P.
81 PR c++/88983 - ICE with switch in constexpr function.
82 * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
83 (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
84 label in the else branch if we found it in the then branch.
86 2019-01-30 Jason Merrill <jason@redhat.com>
88 PR c++/88752 - ICE with lambda and constexpr if.
89 * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
90 * pt.c (tsubst_lambda_expr): Set it.
91 (instantiated_lambda_fn_p): Check it.
92 (enclosing_instantiation_of): Use it.
94 2019-01-31 Jakub Jelinek <jakub@redhat.com>
97 * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
98 a C cast in pp_c_flag_gnu_v3 mode.
100 2019-01-30 Jakub Jelinek <jakub@redhat.com>
103 * lambda.c (is_capture_proxy): Don't return true for
104 DECL_OMP_PRIVATIZED_MEMBER artificial vars.
106 2019-01-30 Marek Polacek <polacek@redhat.com>
108 PR c++/89119 - ICE with value-initialization in template.
109 * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
111 2019-01-29 Jason Merrill <jason@redhat.com>
113 PR c++/86943 - wrong code converting lambda to function pointer.
114 * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
115 call. Only forward parms for decltype.
116 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
118 * typeck.c (check_return_expr): Don't mess with a thunk call.
120 2019-01-28 Jason Merrill <jason@redhat.com>
122 PR c++/89089 - ICE with [[no_unique_address]].
123 PR c++/88865 - wrong layout with [[no_unique_address]].
124 * class.c (check_field_decls): A potentially-overlapping field makes
125 the class non-layout-POD, but not non-empty.
126 (end_of_class): Always consider empty data members.
127 (layout_class_type): Set DECL_SIZE for empty fields.
129 2019-01-28 Marek Polacek <polacek@redhat.com>
131 PR c++/88358 - name wrongly treated as type.
132 * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
133 in parameter-list is a type if the function's declarator-id is not
136 2019-01-27 Marek Polacek <polacek@redhat.com>
138 PR c++/88815 - narrowing conversion lost in decltype.
139 PR c++/78244 - narrowing conversion in template not detected.
140 * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
141 * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
142 CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
143 * semantics.c (finish_compound_literal): When the compound literal
144 isn't instantiation-dependent and the type isn't type-dependent,
145 fall back to the normal processing. Set CONSTRUCTOR_IS_DEPENDENT.
147 PR c++/89024 - ICE with incomplete enum type.
148 * call.c (standard_conversion): When converting an
149 ARITHMETIC_TYPE_P to an incomplete type, return NULL.
151 2019-01-25 Paolo Carlini <paolo.carlini@oracle.com>
154 * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
155 * decl2.c (coerce_delete_type): Use build_pointer_type instead
158 2019-01-24 Jason Merrill <jason@redhat.com>
160 PR c++/89001 - mangling of reference temporaries
161 * cp-tree.h (struct saved_scope): Add ref_temp_count.
162 (current_ref_temp_count): New macro.
163 * mangle.c (mangle_ref_init_variable): Use it.
164 * typeck2.c (store_init_value): Clear it.
165 * call.c (make_temporary_var_for_ref_to_temp): Copy public and
168 2019-01-24 Jakub Jelinek <jakub@redhat.com>
171 * semantics.c (finish_omp_cancel): Diagnose more than one if
172 on #pragma omp cancel with different modifiers. Use
173 maybe_convert_cond when not in template or build_x_binary_op
176 2019-01-23 Marek Polacek <polacek@redhat.com>
178 PR c++/88757 - qualified name treated wrongly as type.
179 * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
180 in parameter-list as types if name lookup for declarator-id didn't
181 find one or more function templates.
183 2019-01-23 Jakub Jelinek <jakub@redhat.com>
186 * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
187 after genericizing cond and incr expressions.
190 * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
191 before the begin_bc_block call.
193 2019-01-21 Jason Merrill <jason@redhat.com>
195 PR c++/87893 - constexpr ctor ICE on ARM.
196 PR c++/88293 - ICE with comma expression.
197 * constexpr.c (initialized_type): Don't shortcut non-void type.
198 Handle COMPOUND_EXPR.
199 (cxx_eval_outermost_constant_expr): Return early for void type.
201 2019-01-21 Jakub Jelinek <jakub@redhat.com>
204 * optimize.c (cxx_copy_decl): New function.
205 (clone_body): Use it instead of copy_decl_no_change.
208 * typeck.c (cp_build_binary_op): Don't instrument
209 SANITIZE_POINTER_COMPARE if processing_template_decl.
210 (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
212 2019-01-18 Jason Merrill <jason@redhat.com>
214 PR c++/88875 - error with explicit list constructor.
215 * call.c (reference_binding): Don't modify EXPR. Set
216 need_temporary_p on the ck_user conversion for a temporary.
217 (convert_like_real): Check it.
219 2019-01-18 H.J. Lu <hongjiu.lu@intel.com>
223 * call.c (convert_for_arg_passing): Upate the
224 warn_for_address_or_pointer_of_packed_member call.
225 * typeck.c (convert_for_assignment): Likewise.
227 2019-01-17 Jason Merrill <jason@redhat.com>
229 PR c++/86205 - ICE with ?: of throw and template-id.
230 * pt.c (resolve_nondeduced_context_or_error): Split out from...
231 * typeck.c (decay_conversion): ...here.
232 * call.c (build_conditional_expr_1): Use it.
234 PR c++/86740, ICE with constexpr if and nested generic lambdas.
235 * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
237 2019-01-17 Paolo Carlini <paolo.carlini@oracle.com>
239 * decl.c (grokdeclarator): Use typespec_loc in error messages
240 about 'auto' and trailing return type.
242 2019-01-17 David Malcolm <dmalcolm@redhat.com>
245 * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
248 2019-01-17 Nathan Sidwell <nathan@acm.org>
251 * semantics.c (process_outer_var_ref): Only skip dependent types
254 2019-01-17 Alexandre Oliva <aoliva@redhat.com>
257 * cp-tree.h (saved_scope): Add suppress_location_wrappers.
258 * name-lookup.c (do_push_to_top_level): Save and reset it.
259 (do_pop_from_top_level): Restore it.
262 * pt.c (make_template_placeholder): Use auto_identifier.
263 (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
264 * error.c (dump_type): Handle template placeholders.
265 * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
268 * cvt.c (convert_to_void): Handle all cdtor calls as if
271 2019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
273 * decl.c (grokdeclarator): Use locations[ds_storage_class] in
274 error messages about ill-formed uses of mutable.
276 2019-01-16 Marek Polacek <polacek@redhat.com>
278 PR c++/78244 - narrowing conversion in template not detected.
279 * call.c (perform_implicit_conversion_flags): Set
280 IMPLICIT_CONV_EXPR_BRACED_INIT.
281 * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
282 * pt.c (tsubst_copy_and_build): Use it.
284 2019-01-15 David Malcolm <dmalcolm@redhat.com>
287 * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
290 2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
292 * decl.c (start_decl): Improve error location.
293 * decl2.c (grokfield): Likewise.
295 2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
297 * decl.c (grokdeclarator): Move further up the location_t loc
298 declaration and use the location when building a TYPE_DECL for
300 * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
301 about an ill-formed bit-field as typedef.
303 2019-01-14 Marek Polacek <polacek@redhat.com>
305 PR c++/88830 - ICE with abstract class.
306 * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
309 PR c++/88825 - ICE with bogus function return type deduction.
310 * typeck.c (can_do_nrvo_p): Check error_mark_node.
312 2019-01-14 Tom Honermann <tom@honermann.net>
314 Implement P0482R5, char8_t: A type for UTF-8 characters and strings
315 * cvt.c (type_promotes_to): Handle char8_t promotion.
316 * decl.c (grokdeclarator): Handle invalid type specifier
317 combinations involving char8_t.
318 * lex.c (init_reswords): Add char8_t as a reserved word.
319 * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
320 * parser.c (cp_keyword_starts_decl_specifier_p)
321 (cp_parser_simple_type_specifier): Recognize char8_t as a simple
323 (cp_parser_string_literal): Use char8_array_type_node for the type
325 (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
327 * rtti.c (emit_support_tinfos): type_info support for char8_t.
328 * tree.c (char_type_p): Recognize char8_t as a character type.
329 * typeck.c (string_conv_p): Handle conversions of u8 string
330 literals of char8_t type.
331 (check_literal_operator_args): Handle UDLs with u8 string literals
333 * typeck2.c (ordinary_char_type_p): New.
334 (digest_init_r): Disallow initializing a char array with a u8 string
337 2019-01-14 Martin Liska <mliska@suse.cz>
339 PR gcov-profile/88263
340 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
341 as location of the TLS wrapper.
343 2019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
345 * decl.c (cp_finish_decl): Improve error location.
346 * decl2.c (grokfield): Likewise, improve two locations.
348 2019-01-11 Marek Polacek <polacek@redhat.com>
350 PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
351 * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
354 2019-01-11 Jason Merrill <jason@redhat.com>
356 PR c++/88312 - pack expansion of decltype.
357 * pt.c (instantiation_dependent_r): A template non-type parameter
358 pack is instantiation-dependent.
360 2019-01-11 Jason Merrill <jason@redhat.com>
362 PR c++/88613 - ICE with use of const var in lambda.
363 * expr.c (mark_use): Fix location wrapper handling.
364 * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
366 2019-01-11 Tobias Burnus <burnus@net-b.de>
369 * decl2.c (maybe_emit_vtables): If needed, generate code for
370 the destructor of an abstract class.
371 (mark_used): Update comment for older function-name change.
373 2019-01-11 Paolo Carlini <paolo.carlini@oracle.com>
375 * decl.c (start_decl): Improve error location.
376 (grokdeclarator): Likewise, improve two locations.
378 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
382 * cp-tree.h: Mechanically replace "can not" with "cannot".
383 * parser.c: Likewise.
386 2019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
388 * decl.c (grok_reference_init): Improve error location.
389 (grokdeclarator): Likewise, improve two locations.
391 2019-01-08 Marek Polacek <polacek@redhat.com>
393 PR c++/88538 - braced-init-list in template-argument-list.
394 * parser.c (cp_parser_template_argument): Handle braced-init-list when
397 PR c++/88548 - this accepted in static member functions.
398 * parser.c (cp_debug_parser): Adjust printing of
399 local_variables_forbidden_p.
400 (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
401 (cp_parser_primary_expression): When checking
402 local_variables_forbidden_p, use THIS_FORBIDDEN or
403 LOCAL_VARS_FORBIDDEN.
404 (cp_parser_lambda_body): Update the type of
405 local_variables_forbidden_p. Set it to 0 rather than false.
406 (cp_parser_condition): Adjust call to cp_parser_declarator.
407 (cp_parser_explicit_instantiation): Likewise.
408 (cp_parser_init_declarator): Likewise.
409 (cp_parser_declarator): New parameter. Use it.
410 (cp_parser_direct_declarator): New parameter. Use it to set
411 local_variables_forbidden_p. Adjust call to cp_parser_declarator.
412 (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
413 (cp_parser_parameter_declaration): Likewise.
414 (cp_parser_default_argument): Update the type of
415 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
417 (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
418 'static' or 'friend'.
419 (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
420 (cp_parser_late_parsing_default_args): Update the type of
421 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
423 (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
424 (cp_parser_objc_class_ivars): Likewise.
425 (cp_parser_objc_struct_declaration): Likewise.
426 (cp_parser_omp_for_loop_init): Likewise.
427 * parser.h (cp_parser): Change the type of local_variables_forbidden_p
429 (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
432 2019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
434 * decl.c (start_decl): Improve permerror location.
436 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
437 Jakub Jelinek <jakub@redhat.com>
440 * decl.c (finish_function): For -Wreturn-type don't add a return *this;
441 fixit hint if current_class_ref is NULL. Use a single if instead of
444 2019-01-07 Paolo Carlini <paolo.carlini@oracle.com>
446 * decl.c (start_decl): Improve two error_at locations.
447 (expand_static_init): Likewise.
449 2019-01-07 Marek Polacek <polacek@redhat.com>
451 PR c++/88741 - wrong error with initializer-string.
452 * decl.c (cp_complete_array_type): Strip any location wrappers.
454 2019-01-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
460 * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
461 * typeck2.c (digest_init_r): Raise an error for non-static
462 initialization of a flexible array member.
463 (process_init_constructor, massage_init_elt,
464 process_init_constructor_array, process_init_constructor_record,
465 process_init_constructor_union, process_init_constructor): Add the
466 flags parameter and pass it thru.
467 (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
468 digest_init_flags for static decls.
470 2019-01-07 Jakub Jelinek <jakub@redhat.com>
473 * cp-tree.h (cp_build_vec_convert): Declare.
474 * parser.c (cp_parser_postfix_expression): Parse
475 __builtin_convertvector.
476 * constexpr.c: Include fold-const-call.h.
477 (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
478 (potential_constant_expression_1): Likewise.
479 * semantics.c (cp_build_vec_convert): New function.
480 * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
483 2019-01-03 Jakub Jelinek <jakub@redhat.com>
486 * decl.c (builtin_function_1): Return result of pushdecl_top_level
487 or pushdecl rather than decl.
489 2019-01-03 Paolo Carlini <paolo.carlini@oracle.com>
491 * tree.c (handle_nodiscard_attribute): Improve warning location.
493 2019-01-02 Marek Polacek <polacek@redhat.com>
495 PR c++/88612 - ICE with -Waddress-of-packed-member.
496 * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
497 * typeck.c (convert_for_assignment): Likewise.
499 PR c++/88631 - CTAD failing for value-initialization.
500 * typeck2.c (build_functional_cast): Try deducing the template
501 arguments even if there are no arguments to deduce from.
503 2019-01-01 Jakub Jelinek <jakub@redhat.com>
505 Update copyright years.
507 Copyright (C) 2019 Free Software Foundation, Inc.
509 Copying and distribution of this file, with or without modification,
510 are permitted in any medium without royalty provided the copyright
511 notice and this notice are preserved.