]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
* gimple-ssa-warn-alloca.c (pass_walloca::execute): Don't wrap
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
29005d9c 12019-03-08 Jakub Jelinek <jakub@redhat.com>
2
94a62c5a 3 PR tree-optimization/89550
4 * semantics.c (maybe_convert_cond): Only set TREE_NO_WARNING if
5 warning_at returned true.
6 * decl2.c (c_parse_final_cleanups): Likewise.
7 * typeck.c (convert_for_assignment): Likewise.
8 * decl.c (finish_function): Likewise.
9
222c113b 10 PR c++/89585
11 * parser.c (cp_parser_asm_definition): Just warn instead of error
12 on volatile qualifier outside of function body.
13
92651efb 14 PR c++/89599
15 * constexpr.c (potential_constant_expression_1): Reject
16 REINTERPRET_CAST_P NOP_EXPRs.
17
29005d9c 18 PR c++/89622
19 * call.c (joust): Call print_z_candidate only if pedwarn returned
20 true.
21
bddb19c4 222019-03-07 Jason Merrill <jason@redhat.com>
23
84982f0e 24 PR c++/88123 - lambda and using-directive.
25 * name-lookup.c (op_unqualified_lookup)
26 (maybe_save_operator_binding, discard_operator_bindings)
27 (push_operator_bindings): New.
28 * typeck.c (build_x_binary_op, build_x_unary_op): Call
29 maybe_save_operator_binding.
30 * decl.c (start_preparsed_function): Call push_operator_bindings.
31 * tree.c (cp_free_lang_data): Call discard_operator_bindings.
32
bddb19c4 33 PR c++/88820 - ICE with CTAD and member template used in DMI.
34 * pt.c (do_class_deduction): Handle parm used as its own arg.
35
02a7fc59 362019-03-07 Jakub Jelinek <jakub@redhat.com>
37
38 PR c++/89585
39 * parser.c (cp_parser_asm_definition): Parse asm qualifiers even
40 at toplevel, but diagnose them.
41
bc17f5fd 422019-03-06 Jason Merrill <jason@redhat.com>
43
44 PR c++/89381 - implicit copy and using-declaration.
45 * class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider
46 op= brought in by a using-declaration.
47
aa49bda0 482019-03-06 Jakub Jelinek <jakub@redhat.com>
49
50 PR c++/87148
51 * init.c (build_value_init_noctor): Ignore flexible array members.
52
02daf5d2 532019-03-06 Jason Merrill <jason@redhat.com>
54
55 PR c++/89576 - if constexpr of lambda capture.
56 * semantics.c (maybe_convert_cond): Do convert a non-dependent
57 condition in a template.
58 * typeck.c (condition_conversion): Handle being called in a
59 template.
60
55d0cc00 612019-03-06 Marek Polacek <polacek@redhat.com>
62
63 PR c++/87378 - bogus -Wredundant-move warning.
64 * typeck.c (maybe_warn_pessimizing_move): See if the maybe-rvalue
65 overload resolution would actually succeed.
66
cd5a9ed1 672019-03-05 Jason Merrill <jason@redhat.com>
68
69 * class.c (is_really_empty_class): Add ignore_vptr parm.
70 (trivial_default_constructor_is_constexpr): Pass it.
71 * call.c (build_over_call): Pass it.
72 * constexpr.c (cxx_eval_constant_expression): Pass it instead of
73 checking TYPE_POLYMORPHIC_P.
74 (cxx_eval_component_reference, potential_constant_expression_1):
75 Pass it.
76 * cp-gimplify.c (simple_empty_class_p): Pass it.
77 * init.c (expand_aggr_init_1): Pass it.
78
1751c288 792019-03-04 Paolo Carlini <paolo.carlini@oracle.com>
80
81 PR c++/84605
82 * parser.c (cp_parser_class_head): Reject TYPE_BEING_DEFINED too.
83
10599713 842019-03-04 Jakub Jelinek <jakub@redhat.com>
85
86 PR c++/71446
87 * call.c (field_in_pset): New function.
88 (build_aggr_conv): Handle CONSTRUCTOR_IS_DESIGNATED_INIT correctly.
89
73e3d2ee 902019-03-02 Jakub Jelinek <jakub@redhat.com>
91
92 PR c++/71446
93 * cp-tree.h (CONSTRUCTOR_IS_DESIGNATED_INIT): Define.
94 * parser.c (cp_parser_braced_list): Adjust cp_parser_initializer_list
95 caller, set CONSTRUCTOR_IS_DESIGNATED_INIT.
96 (cp_parser_initializer_list): Add designated parameter, set *designated
97 to a bool whether any designators were parsed.
98 * decl.c (reshape_init): Copy over CONSTRUCTOR_IS_DESIGNATED_INIT if
99 needed.
100 * pt.c (tsubst_copy_and_build): Likewise.
101 * call.c (implicit_conversion): If CONSTRUCTOR_IS_DESIGNATED_INIT,
102 don't call build_list_conv, nor build_complex_conv, nor attempt to
103 convert a single element initializer to scalar.
104
f409a882 1052019-03-01 Marek Polacek <polacek@redhat.com>
106
ae8e3cb6 107 PR c++/89537 - missing location for error with non-static member fn.
108 * call.c (resolve_args): Use EXPR_LOCATION.
109 * typeck.c (build_class_member_access_expr): Use input_location.
110
f409a882 111 PR c++/89532 - ICE with incomplete type in decltype.
112 * semantics.c (finish_compound_literal): Return error_mark_node
113 if digest_init_flags returns error_mark_node.
114
b279a142 1152019-03-01 Jakub Jelinek <jakub@redhat.com>
116
117 Implement P1002R1, Try-catch blocks in constexpr functions
118 PR c++/89513
119 * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
120 Diagnose constexpr ctor or function with function-try-block with
121 pedwarn for c++17 and earlier. Formatting fix.
122 (cp_parser_try_block): Use pedwarn instead of error and only for
123 c++17 and earlier when try block appears in constexpr function.
124 * constexpr.c (build_constexpr_constructor_member_initializers):
125 Handle TRY_BLOCK here instead of erroring on it.
126
c7110ca7 1272019-02-28 Jason Merrill <jason@redhat.com>
128
bb019931 129 PR c++/88183 - ICE with .* fold-expression.
130 * pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.
131
9b4cf3ba 132 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
133 * class.c, lambda.c, pt.c: Revert earlier change.
134 * lambda.c (add_capture): Don't special-case capture of dependent
135 VLA.
136
c7110ca7 137 * name-lookup.c (print_binding_level): Print this_entity.
138
90c2137c 1392019-02-27 Marek Polacek <polacek@redhat.com>
140
141 PR c++/88857 - ICE with value-initialization of argument in template.
142 * call.c (convert_like_real): Don't call build_value_init in template.
143
9ecd4044 1442019-02-27 Jason Merrill <jason@redhat.com>
145
146 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
147 * semantics.c (process_outer_var_ref): Do capture dependent vars.
148 * class.c (finish_struct): Only add TAG_DEFN if T is in
149 current_function_decl.
150 * lambda.c (vla_capture_type): Force the capture type out into the
151 lambda's enclosing function.
152 (add_capture): Pass in the lambda.
153 * pt.c (tsubst_lambda_expr): complete_type a VLA capture type.
154
7304edd1 1552019-02-27 Marek Polacek <polacek@redhat.com>
156
157 PR c++/89511 - ICE with using-declaration and unscoped enumerator.
158 * parser.c (cp_parser_using_declaration): For an unscoped enum
159 only use its context if it's not a function declaration.
160
c9f30cbb 1612019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
162
163 PR c++/89488
164 * method.c (process_subob_fn): When maybe_instantiate_noexcept
165 returns false don't call merge_exception_specifiers.
166
1672019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
168
169 PR c++/88987
170 * parser.c (cp_parser_noexcept_specification_opt): Return NULL_TREE
171 for a non-constant parsed expression.
172
a165fd90 1732019-02-26 Jakub Jelinek <jakub@redhat.com>
174
175 PR c++/89481
176 * constexpr.c (cxx_eval_store_expression): When changing active union
177 member, set no_zero_init.
178
c005651d 1792019-02-23 Marek Polacek <polacek@redhat.com>
180
181 PR c++/88294 - ICE with non-constant noexcept-specifier.
182 * pt.c (maybe_instantiate_noexcept): Set up the list of local
183 specializations. Set current_class_{ptr,ref}.
184
689cc9b6 1852019-02-22 David Malcolm <dmalcolm@redhat.com>
186
187 PR c++/89390
188 * parser.c (cp_parser_unqualified_id): Capture and use locations
189 for destructors.
190
e7652833 1912019-02-22 Marek Polacek <polacek@redhat.com>
192
193 PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
194 * decl.c (build_explicit_specifier): Don't check
195 processing_template_decl. Call instantiation_dependent_expression_p
196 instead of value_dependent_expression_p. Call
197 instantiate_non_dependent_expr_sfinae before
198 build_converted_constant_expr instead of calling
199 instantiate_non_dependent_expr after it. Add
200 processing_template_decl_sentinel.
201
51391c1d 2022019-02-22 Thomas Schwinge <thomas@codesourcery.com>
203
204 * parser.c (cp_parser_oacc_simple_clause): Remove parser formal
205 parameter, move loc formal parameter to the front. Adjust all
206 users.
207 (cp_parser_oacc_shape_clause): Add loc formal parameter. Adjust
208 all users.
209
b6700c1a 2102019-02-21 Jason Merrill <jason@redhat.com>
211
532cca3f 212 PR c++/87685 - generic lambda 'this' capture error.
213 * lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
214 (maybe_generic_this_capture): Pass -1.
215
a7ea8f96 216 PR c++/88394 - ICE with VLA init-capture.
217 * lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.
218
e2d4b8be 219 PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
220 * pt.c (do_class_deduction): Don't include explicit specialization
221 args in outer_args.
222
b6700c1a 223 PR c++/89422 - ICE with -g and lambda in default arg in template.
224 * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
225
147a31b6 2262019-02-21 Jason Merrill <jason@redhat.com>
227
228 PR c++/88419 - C++17 ICE with class template arg deduction.
229 * pt.c (make_template_placeholder): Set TYPE_CANONICAL after
230 CLASS_PLACEHOLDER_TEMPLATE.
231
02d7a132 2322019-02-21 Jakub Jelinek <jakub@redhat.com>
233
234 PR c++/89285
235 * constexpr.c (struct constexpr_fundef): Add parms and result members.
236 (retrieve_constexpr_fundef): Adjust for the above change.
237 (register_constexpr_fundef): Save constexpr body with copy_fn,
238 temporarily set DECL_CONTEXT on DECL_RESULT before that.
239 (get_fundef_copy): Change FUN argument to FUNDEF with
240 constexpr_fundef * type, grab body and parms/result out of
241 constexpr_fundef struct and temporarily change it for copy_fn calls
242 too.
243 (cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
244 adjust current_function_decl from ctx->call context. Test
245 !potential_constant_expression instead of !is_constant_expression.
246 (cxx_bind_parameters_in_call): Grab parameters from new_call. Undo
247 convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
248 (cxx_eval_call_expression): Adjust get_fundef_copy caller.
249 (cxx_eval_conditional_expression): For IF_STMT, allow then or else
250 operands to be NULL.
251 (label_matches): Handle BREAK_STMT and CONTINUE_STMT.
252 (cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
253 (cxx_eval_switch_expr): Add support for SWITCH_STMT.
254 (cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
255 DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
256 For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr. Ignore
257 DECL_EXPR with USING_DECL operand.
258 * lambda.c (maybe_add_lambda_conv_op): Build thisarg using
259 build_int_cst to make it a valid constant expression.
260
dcd8f919 2612019-02-20 Jason Merrill <jason@redhat.com>
262
263 PR c++/88690 - C++17 ICE with empty base in aggregate.
264 * typeck2.c (process_init_constructor_record): Skip trivial
265 initialization of an empty base.
266
309e5f71 2672019-02-21 Richard Biener <rguenther@suse.de>
268
269 PR middle-end/89392
270 * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
271 make symtab process new functions here.
272
4e60ed29 2732019-02-20 Jason Merrill <jason@redhat.com>
274
275 PR c++/87921 - wrong error with inline static data member.
276 * decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
277 for a non-template inline variable. Do nothing for an
278 already-instantiated variable.
279 (c_parse_final_cleanups): Check DECL_IN_AGGR_P without
280 DECL_INLINE_VAR_P.
281 * decl.c (check_initializer): Likewise.
282 (make_rtl_for_nonlocal_decl): Likewise.
283 * pt.c (instantiate_decl): Likewise.
284 * typeck2.c (store_init_value): Likewise.
285
b47245f1 2862019-02-20 Jakub Jelinek <jakub@redhat.com>
287
0c3f2aa9 288 PR c++/89403
289 * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
290 for flag_syntax_only from here...
291 * semantics.c (expand_or_defer_fn_1): ... here.
292
02dc6028 293 PR c++/89405
294 * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
295 DECL_COMMON, set DECL_INTERFACE_KNOWN.
296
b47245f1 297 PR c++/89336
298 * constexpr.c (cxx_eval_store_expression): Diagnose changing of active
299 union member for -std=c++17 and earlier.
300
af48cea2 3012019-02-19 Jason Merrill <jason@redhat.com>
302
303 PR c++/87513 - 'sorry' mangling PMF template-id.
304 * mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
305
fd8a4665 3062019-02-19 Jason Merrill <jason@redhat.com>
307
308 PR c++/88380 - wrong-code with flexible array and NSDMI.
309 * typeck2.c (process_init_constructor_record): Skip flexarrays.
310
53ceddc9 3112019-02-20 will wray <wjwray@gmail.com>
312
313 PR c++/88572 - wrong handling of braces on scalar init.
314 * decl.c (reshape_init_r): Allow braces around scalar initializer
315 within aggregate init. Reject double braced-init of scalar
316 variable.
317
ab0fbe16 3182019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
319
320 PR c++/84536
321 * pt.c (tsubst_init): Diagnose an initializer expanding to an
322 empty list of expressions; tweak wrt dependent types.
323 (regenerate_decl_from_template): For VAR_DECLs call tsubst_init
324 instead of tsubst_expr.
325
ce7f22f1 3262019-02-19 Jason Merrill <jason@redhat.com>
327
328 PR c++/88368 - wrong 'use of deleted function'
329 * method.c (walk_field_subobs): Remember errors from get_nsdmi.
330 (get_defaulted_eh_spec): Call push_tinst_level.
331 * pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
332 * typeck2.c (merge_exception_specifiers): Handle error_mark_node.
333
d572a4c3 3342019-02-19 Chung-Lin Tang <cltang@codesourcery.com>
335
336 PR c/87924
337 * parser.c (cp_parser_oacc_clause_wait): Add representation of wait
338 clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
339
31358ed0 3402019-02-19 Jakub Jelinek <jakub@redhat.com>
341
5ebe5c44 342 PR c++/89387
343 * lambda.c (maybe_generic_this_capture): Don't check
344 DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
345
fcea8c4d 346 PR c++/89391
347 * typeck.c (build_reinterpret_cast_1): Don't handle void to
348 && conversion go through build_target_expr_with_type.
349
31358ed0 350 PR c++/89390
351 * error.c (qualified_name_lookup_error): Only call
352 suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
353
25694c85 3542019-02-19 Tom Honermann <tom@honermann.net>
355
356 * name-lookup.c (get_std_name_hint): Added u8string as a name hint.
357
a1e1b603 3582019-02-18 Jason Merrill <jason@redhat.com>
359
6aaacaf1 360 PR c++/89336 - multiple stores in constexpr stmt.
361 * constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
362 assigned value.
363
f6347d1a 364 * pt.c (check_explicit_specialization): If the declarator is a
365 template-id, only check whether the arguments are dependent.
366
a1e1b603 367 Improve duplicate [[likely]] diagnostic.
368 * parser.c (cp_parser_statement): Make attrs_loc a range. Pass it
369 to process_stmt_hotness_attribute.
370 * cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
371 (genericize_if_stmt): Use likely/unlikely instead of predictor_name.
372
33e6651d 3732019-02-17 Marek Polacek <polacek@redhat.com>
374
375 PR c++/89217 - ICE with list-initialization in range-based for loop.
376 * constexpr.c (unshare_constructor): No longer static.
377 * cp-tree.h (unshare_constructor): Declare.
378 * semantics.c (finish_compound_literal): When dealing with a
379 non-dependent expression in a template, return the original
380 expression. Pass LOOKUP_NO_NARROWING to digest_init_flags.
381
3a860627 3822019-02-13 Marek Polacek <polacek@redhat.com>
383
384 PR c++/89297 - ICE with OVERLOAD in template.
385 * semantics.c (finish_compound_literal): Call
386 instantiate_non_dependent_expr_sfinae.
387
601c59dd 3882019-02-13 Alexandre Oliva <aoliva@redhat.com>
389
40563cf7 390 PR c++/86379
391 * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
392 * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
393 * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
394 (shared_member_p): Likewise.
395 (lookup_member): Likewise.
396 * decl.c (grok_special_member_properties): Skip USING_DECLs.
397 * semantics.c (finish_omp_declare_simd_methods): Likewise.
398 (finish_qualified_id_expr): Do not call shared_member_p with
399 a dependent expr.
400
601c59dd 401 PR c++/87322
402 * pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
403 Move cp_evaluated resetting before signature tsubsting.
404 (gen_elem_of_pack_expansion_instantiation): Separate local
405 specializations per index.
406
f2da1a76 4072019-02-13 David Malcolm <dmalcolm@redhat.com>
408
409 PR c++/89036
410 * class.c (add_method): Drop destructor assertion.
411
64bd49fa 4122019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
413
414 PR c++/88986
415 * decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
416 context (the first argument).
417 * pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
418 as context.
419
c8e19553 4202019-02-12 Jason Merrill <jason@redhat.com>
421
422 PR c++/89144 - link error with constexpr initializer_list.
423 * call.c (convert_like_real) [ck_list]: Don't allocate a temporary
424 array for an empty list.
425 * typeck2.c (store_init_value): Don't use cxx_constant_init in a
426 template.
427
33fe677e 4282019-02-11 Jason Merrill <jason@redhat.com>
429
430 PR c++/89241 - ICE with __func__ in lambda in template.
431 * pt.c (enclosing_instantiation_of): Also check
432 instantiated_lambda_fn_p for the template context.
433
44263306 4342019-02-11 Marek Polacek <polacek@redhat.com>
435
436 PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
437 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
438 null member pointer value.
439
61b94553 4402019-02-11 Jakub Jelinek <jakub@redhat.com>
441
442 PR c++/88977
443 * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
444 to maybe_constant_value calls.
445
b10193f4 4462019-02-11 Marek Polacek <polacek@redhat.com>
447
448 * typeck2.c (digest_init_r): Remove commented code.
449
08acf739 4502019-02-11 Martin Sebor <msebor@redhat.com>
451
452 PR c++/87996
453 * decl.c (compute_array_index_type_loc): Preserve signed sizes
454 for diagnostics. Call valid_array_size_p instead of error.
455 * init.c (build_new_1): Compute size for diagnostic. Call
456 invalid_array_size_error
457 (build_new): Call valid_array_size_p instead of error.
458
939d44f3 4592019-02-07 Alexandre Oliva <aoliva@redhat.com>
460
461 PR c++/86218
462 * call.c (compare_ics): Deal with ck_aggr in either cs.
463
c92ab8d4 4642019-02-06 David Malcolm <dmalcolm@redhat.com>
465
466 PR c++/71302
467 * call.c (get_location_for_expr_unwinding_for_system_header): New
468 function.
469 (conversion_null_warnings): Use it when getting locations for
470 EXPR, effectively adding a call to
471 get_location_for_expr_unwinding_for_system_header for
472 -Wconversion-null and making use of EXPR_LOCATION for
473 -Wzero-as-null-pointer-constant.
474
b5a6b127 4752019-02-05 Jakub Jelinek <jakub@redhat.com>
476
477 PR c++/89187
478 * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
479 PARM_DECLs of the thunk.
480 * lambda.c (maybe_add_lambda_conv_op): Likewise.
481
74ce2ebb 4822019-02-05 Marek Polacek <polacek@redhat.com>
483
484 PR c++/89158 - by-value capture of constexpr variable broken.
485 * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
486 instead of mark_rvalue_use.
487
9ca54fa1 4882019-02-05 Alexandre Oliva <aoliva@redhat.com>
489
490 PR c++/87770
491 * pt.c (instantiates_primary_template_p): New.
492 (type_dependent_expression_p): Use it.
493
c758dd5a 4942019-02-01 Jason Merrill <jason@redhat.com>
495
496 PR c++/88761 - ICE with reference capture of constant.
497 * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
498 non-proxy decls.
499
bdb43276 5002019-02-01 Marek Polacek <polacek@redhat.com>
501
502 PR c++/88325 - ICE with invalid out-of-line template member definition.
503 * parser.c (cp_parser_class_name): Don't call make_typename_type
504 for overloads.
505
5ab8180e 5062019-02-01 Jakub Jelinek <jakub@redhat.com>
507
508 PR c++/87175
509 * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
510 if require_open failed.
511
c8f861a0 5122019-01-31 Marek Polacek <polacek@redhat.com>
513
514 PR c++/89083, c++/80864 - ICE with list initialization in template.
515 * constexpr.c (adjust_temp_type): Use copy_node and change the type
516 instead of using build_constructor.
517 * decl.c (reshape_init_r): Don't reshape a digested initializer.
518 Return the initializer for COMPOUND_LITERAL_P.
519
f1329be6 520 PR c++/88983 - ICE with switch in constexpr function.
521 * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
522 (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
523 label in the else branch if we found it in the then branch.
524
8c28f0ef 5252019-01-30 Jason Merrill <jason@redhat.com>
526
527 PR c++/88752 - ICE with lambda and constexpr if.
528 * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
529 * pt.c (tsubst_lambda_expr): Set it.
530 (instantiated_lambda_fn_p): Check it.
531 (enclosing_instantiation_of): Use it.
532
abb9ae66 5332019-01-31 Jakub Jelinek <jakub@redhat.com>
534
535 PR libstdc++/88170
536 * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
537 a C cast in pp_c_flag_gnu_v3 mode.
538
9b0e9786 5392019-01-30 Jakub Jelinek <jakub@redhat.com>
540
541 PR c++/88988
542 * lambda.c (is_capture_proxy): Don't return true for
543 DECL_OMP_PRIVATIZED_MEMBER artificial vars.
544
7066144a 5452019-01-30 Marek Polacek <polacek@redhat.com>
546
547 PR c++/89119 - ICE with value-initialization in template.
548 * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
549
64e3499e 5502019-01-29 Jason Merrill <jason@redhat.com>
551
552 PR c++/86943 - wrong code converting lambda to function pointer.
553 * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
554 call. Only forward parms for decltype.
555 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
556 specially.
557 * typeck.c (check_return_expr): Don't mess with a thunk call.
558
107cba11 5592019-01-28 Jason Merrill <jason@redhat.com>
560
561 PR c++/89089 - ICE with [[no_unique_address]].
562 PR c++/88865 - wrong layout with [[no_unique_address]].
563 * class.c (check_field_decls): A potentially-overlapping field makes
564 the class non-layout-POD, but not non-empty.
565 (end_of_class): Always consider empty data members.
566 (layout_class_type): Set DECL_SIZE for empty fields.
567
44da2a17 5682019-01-28 Marek Polacek <polacek@redhat.com>
569
570 PR c++/88358 - name wrongly treated as type.
571 * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
572 in parameter-list is a type if the function's declarator-id is not
573 qualified.
574
1d41b42f 5752019-01-27 Marek Polacek <polacek@redhat.com>
576
b7feeace 577 PR c++/88815 - narrowing conversion lost in decltype.
578 PR c++/78244 - narrowing conversion in template not detected.
579 * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
580 * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
581 CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
582 * semantics.c (finish_compound_literal): When the compound literal
583 isn't instantiation-dependent and the type isn't type-dependent,
584 fall back to the normal processing. Set CONSTRUCTOR_IS_DEPENDENT.
585
1d41b42f 586 PR c++/89024 - ICE with incomplete enum type.
587 * call.c (standard_conversion): When converting an
588 ARITHMETIC_TYPE_P to an incomplete type, return NULL.
589
837ddebd 5902019-01-25 Paolo Carlini <paolo.carlini@oracle.com>
591
592 PR c++/88969
593 * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
594 * decl2.c (coerce_delete_type): Use build_pointer_type instead
595 of TYPE_POINTER_TO.
596
8c89c5fc 5972019-01-24 Jason Merrill <jason@redhat.com>
598
599 PR c++/89001 - mangling of reference temporaries
600 * cp-tree.h (struct saved_scope): Add ref_temp_count.
601 (current_ref_temp_count): New macro.
602 * mangle.c (mangle_ref_init_variable): Use it.
603 * typeck2.c (store_init_value): Clear it.
604 * call.c (make_temporary_var_for_ref_to_temp): Copy public and
605 comdat.
606
b5e76680 6072019-01-24 Jakub Jelinek <jakub@redhat.com>
608
609 PR c++/88976
610 * semantics.c (finish_omp_cancel): Diagnose more than one if
611 on #pragma omp cancel with different modifiers. Use
612 maybe_convert_cond when not in template or build_x_binary_op
613 otherwise.
614
dffbcba8 6152019-01-23 Marek Polacek <polacek@redhat.com>
616
617 PR c++/88757 - qualified name treated wrongly as type.
618 * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
619 in parameter-list as types if name lookup for declarator-id didn't
620 find one or more function templates.
621
1f03c410 6222019-01-23 Jakub Jelinek <jakub@redhat.com>
623
8090d51c 624 PR c/44715
625 * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
626 after genericizing cond and incr expressions.
627
1f03c410 628 PR c++/88984
629 * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
630 before the begin_bc_block call.
631
48c03f15 6322019-01-21 Jason Merrill <jason@redhat.com>
633
634 PR c++/87893 - constexpr ctor ICE on ARM.
635 PR c++/88293 - ICE with comma expression.
636 * constexpr.c (initialized_type): Don't shortcut non-void type.
637 Handle COMPOUND_EXPR.
638 (cxx_eval_outermost_constant_expr): Return early for void type.
639
99bf4b63 6402019-01-21 Jakub Jelinek <jakub@redhat.com>
641
77fe9474 642 PR c++/88949
643 * optimize.c (cxx_copy_decl): New function.
644 (clone_body): Use it instead of copy_decl_no_change.
645
99bf4b63 646 PR sanitizer/88901
647 * typeck.c (cp_build_binary_op): Don't instrument
648 SANITIZE_POINTER_COMPARE if processing_template_decl.
649 (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
650
ecd2d842 6512019-01-18 Jason Merrill <jason@redhat.com>
652
653 PR c++/88875 - error with explicit list constructor.
654 * call.c (reference_binding): Don't modify EXPR. Set
655 need_temporary_p on the ck_user conversion for a temporary.
656 (convert_like_real): Check it.
657
6d4e8a95 6582019-01-18 H.J. Lu <hongjiu.lu@intel.com>
659
660 PR c/51628
661 PR c/88664
662 * call.c (convert_for_arg_passing): Upate the
663 warn_for_address_or_pointer_of_packed_member call.
664 * typeck.c (convert_for_assignment): Likewise.
665
9d3c4130 6662019-01-17 Jason Merrill <jason@redhat.com>
667
bc9c0483 668 PR c++/86205 - ICE with ?: of throw and template-id.
669 * pt.c (resolve_nondeduced_context_or_error): Split out from...
670 * typeck.c (decay_conversion): ...here.
671 * call.c (build_conditional_expr_1): Use it.
672
9d3c4130 673 PR c++/86740, ICE with constexpr if and nested generic lambdas.
674 * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
675
0f910e62 6762019-01-17 Paolo Carlini <paolo.carlini@oracle.com>
677
678 * decl.c (grokdeclarator): Use typespec_loc in error messages
679 about 'auto' and trailing return type.
680
098cc8f0 6812019-01-17 David Malcolm <dmalcolm@redhat.com>
682
683 PR c++/88699
684 * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
685 USING_DECLs.
686
a395125a 6872019-01-17 Nathan Sidwell <nathan@acm.org>
688
689 PR c++/86610
690 * semantics.c (process_outer_var_ref): Only skip dependent types
691 in templates.
692
5461905d 6932019-01-17 Alexandre Oliva <aoliva@redhat.com>
694
c5f929a4 695 PR c++/87768
696 * cp-tree.h (saved_scope): Add suppress_location_wrappers.
697 * name-lookup.c (do_push_to_top_level): Save and reset it.
698 (do_pop_from_top_level): Restore it.
699
f97941b7 700 PR c++/86648
701 * pt.c (make_template_placeholder): Use auto_identifier.
702 (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
703 * error.c (dump_type): Handle template placeholders.
704 * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
705
5461905d 706 PR c++/88146
707 * cvt.c (convert_to_void): Handle all cdtor calls as if
708 returning void.
709
b92cc3ed 7102019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
711
712 * decl.c (grokdeclarator): Use locations[ds_storage_class] in
713 error messages about ill-formed uses of mutable.
714
9fc2172c 7152019-01-16 Marek Polacek <polacek@redhat.com>
716
717 PR c++/78244 - narrowing conversion in template not detected.
718 * call.c (perform_implicit_conversion_flags): Set
719 IMPLICIT_CONV_EXPR_BRACED_INIT.
720 * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
721 * pt.c (tsubst_copy_and_build): Use it.
722
727d210b 7232019-01-15 David Malcolm <dmalcolm@redhat.com>
724
725 PR c++/88795
726 * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
727 fails.
728
39a51021 7292019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
730
731 * decl.c (start_decl): Improve error location.
732 * decl2.c (grokfield): Likewise.
733
7342019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
735
736 * decl.c (grokdeclarator): Move further up the location_t loc
737 declaration and use the location when building a TYPE_DECL for
738 a typedef name.
739 * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
740 about an ill-formed bit-field as typedef.
741
affca1c8 7422019-01-14 Marek Polacek <polacek@redhat.com>
743
744 PR c++/88830 - ICE with abstract class.
745 * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
746 Fix formatting.
747
9f8a8956 748 PR c++/88825 - ICE with bogus function return type deduction.
749 * typeck.c (can_do_nrvo_p): Check error_mark_node.
750
82362779 7512019-01-14 Tom Honermann <tom@honermann.net>
752
753 Implement P0482R5, char8_t: A type for UTF-8 characters and strings
754 * cvt.c (type_promotes_to): Handle char8_t promotion.
755 * decl.c (grokdeclarator): Handle invalid type specifier
756 combinations involving char8_t.
757 * lex.c (init_reswords): Add char8_t as a reserved word.
758 * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
759 * parser.c (cp_keyword_starts_decl_specifier_p)
760 (cp_parser_simple_type_specifier): Recognize char8_t as a simple
761 type specifier.
762 (cp_parser_string_literal): Use char8_array_type_node for the type
763 of CPP_UTF8STRING.
764 (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
765 headers.
766 * rtti.c (emit_support_tinfos): type_info support for char8_t.
767 * tree.c (char_type_p): Recognize char8_t as a character type.
768 * typeck.c (string_conv_p): Handle conversions of u8 string
769 literals of char8_t type.
770 (check_literal_operator_args): Handle UDLs with u8 string literals
771 of char8_t type.
772 * typeck2.c (ordinary_char_type_p): New.
773 (digest_init_r): Disallow initializing a char array with a u8 string
774 literal.
775
bf4eb32b 7762019-01-14 Martin Liska <mliska@suse.cz>
777
778 PR gcov-profile/88263
779 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
780 as location of the TLS wrapper.
781
2fa582a9 7822019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
783
784 * decl.c (cp_finish_decl): Improve error location.
785 * decl2.c (grokfield): Likewise, improve two locations.
786
0b5957b9 7872019-01-11 Marek Polacek <polacek@redhat.com>
788
789 PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
790 * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
791 ADDR_EXPR.
792
d07c152b 7932019-01-11 Jason Merrill <jason@redhat.com>
794
795 PR c++/88312 - pack expansion of decltype.
796 * pt.c (instantiation_dependent_r): A template non-type parameter
797 pack is instantiation-dependent.
798
0c2ebbc4 7992019-01-11 Jason Merrill <jason@redhat.com>
800
801 PR c++/88613 - ICE with use of const var in lambda.
802 * expr.c (mark_use): Fix location wrapper handling.
803 * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
804
1b2f170e 8052019-01-11 Tobias Burnus <burnus@net-b.de>
806
807 PR C++/88114
808 * decl2.c (maybe_emit_vtables): If needed, generate code for
809 the destructor of an abstract class.
810 (mark_used): Update comment for older function-name change.
811
b385e516 8122019-01-11 Paolo Carlini <paolo.carlini@oracle.com>
813
814 * decl.c (start_decl): Improve error location.
815 (grokdeclarator): Likewise, improve two locations.
816
f4d3c071 8172019-01-09 Sandra Loosemore <sandra@codesourcery.com>
818
819 PR other/16615
820
821 * cp-tree.h: Mechanically replace "can not" with "cannot".
822 * parser.c: Likewise.
823 * pt.c: Likewise.
824
7cc45975 8252019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
826
827 * decl.c (grok_reference_init): Improve error location.
828 (grokdeclarator): Likewise, improve two locations.
829
90e20c9c 8302019-01-08 Marek Polacek <polacek@redhat.com>
831
91902bb4 832 PR c++/88538 - braced-init-list in template-argument-list.
833 * parser.c (cp_parser_template_argument): Handle braced-init-list when
834 in C++20.
835
90e20c9c 836 PR c++/88548 - this accepted in static member functions.
837 * parser.c (cp_debug_parser): Adjust printing of
838 local_variables_forbidden_p.
839 (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
840 (cp_parser_primary_expression): When checking
841 local_variables_forbidden_p, use THIS_FORBIDDEN or
842 LOCAL_VARS_FORBIDDEN.
843 (cp_parser_lambda_body): Update the type of
844 local_variables_forbidden_p. Set it to 0 rather than false.
845 (cp_parser_condition): Adjust call to cp_parser_declarator.
846 (cp_parser_explicit_instantiation): Likewise.
847 (cp_parser_init_declarator): Likewise.
848 (cp_parser_declarator): New parameter. Use it.
849 (cp_parser_direct_declarator): New parameter. Use it to set
850 local_variables_forbidden_p. Adjust call to cp_parser_declarator.
851 (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
852 (cp_parser_parameter_declaration): Likewise.
853 (cp_parser_default_argument): Update the type of
854 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
855 rather than true.
856 (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
857 'static' or 'friend'.
858 (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
859 (cp_parser_late_parsing_default_args): Update the type of
860 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
861 rather than true.
862 (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
863 (cp_parser_objc_class_ivars): Likewise.
864 (cp_parser_objc_struct_declaration): Likewise.
865 (cp_parser_omp_for_loop_init): Likewise.
866 * parser.h (cp_parser): Change the type of local_variables_forbidden_p
867 to unsigned char.
868 (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
869 Define.
870
8f7d5246 8712019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
872
873 * decl.c (start_decl): Improve permerror location.
874
6e5908c9 8752019-01-08 Jonathan Wakely <jwakely@redhat.com>
876 Jakub Jelinek <jakub@redhat.com>
877
878 PR c++/88554
879 * decl.c (finish_function): For -Wreturn-type don't add a return *this;
880 fixit hint if current_class_ref is NULL. Use a single if instead of
881 two nested ones.
882
2318c037 8832019-01-07 Paolo Carlini <paolo.carlini@oracle.com>
884
885 * decl.c (start_decl): Improve two error_at locations.
886 (expand_static_init): Likewise.
887
677576f7 8882019-01-07 Marek Polacek <polacek@redhat.com>
889
890 PR c++/88741 - wrong error with initializer-string.
891 * decl.c (cp_complete_array_type): Strip any location wrappers.
892
c38103e8 8932019-01-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
894
895 PR c++/88261
896 PR c++/69338
897 PR c++/69696
898 PR c++/69697
899 * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
900 * typeck2.c (digest_init_r): Raise an error for non-static
901 initialization of a flexible array member.
902 (process_init_constructor, massage_init_elt,
903 process_init_constructor_array, process_init_constructor_record,
904 process_init_constructor_union, process_init_constructor): Add the
905 flags parameter and pass it thru.
906 (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
907 digest_init_flags for static decls.
908
59409f09 9092019-01-07 Jakub Jelinek <jakub@redhat.com>
910
911 PR c++/85052
912 * cp-tree.h (cp_build_vec_convert): Declare.
913 * parser.c (cp_parser_postfix_expression): Parse
914 __builtin_convertvector.
915 * constexpr.c: Include fold-const-call.h.
916 (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
917 (potential_constant_expression_1): Likewise.
918 * semantics.c (cp_build_vec_convert): New function.
919 * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
920 IFN_VEC_CONVERT.
921
0627c5c9 9222019-01-03 Jakub Jelinek <jakub@redhat.com>
923
924 PR c++/88636
925 * decl.c (builtin_function_1): Return result of pushdecl_top_level
926 or pushdecl rather than decl.
927
f9f7d90c 9282019-01-03 Paolo Carlini <paolo.carlini@oracle.com>
929
930 * tree.c (handle_nodiscard_attribute): Improve warning location.
931
37fb9cf6 9322019-01-02 Marek Polacek <polacek@redhat.com>
933
934 PR c++/88612 - ICE with -Waddress-of-packed-member.
935 * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
936 * typeck.c (convert_for_assignment): Likewise.
937
6080dd2f 938 PR c++/88631 - CTAD failing for value-initialization.
939 * typeck2.c (build_functional_cast): Try deducing the template
940 arguments even if there are no arguments to deduce from.
941
fbd26352 9422019-01-01 Jakub Jelinek <jakub@redhat.com>
ca29c574 943
8e8f6434 944 Update copyright years.
7dfbd804 945\f
fbd26352 946Copyright (C) 2019 Free Software Foundation, Inc.
7dfbd804 947
948Copying and distribution of this file, with or without modification,
949are permitted in any medium without royalty provided the copyright
950notice and this notice are preserved.