]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
PR c++/84927
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
40a59fc0 12018-03-19 Marek Polacek <polacek@redhat.com>
2
3 PR c++/84925
4 * pt.c (enclosing_instantiation_of): Check if fn is null.
5
79e65a6b 6 PR c++/84927
7 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
8 as we evaluate the elements.
9 (cxx_eval_constant_expression): Verify constructor's flags
10 unconditionally.
11
40e0b1f2 122018-03-16 Jason Merrill <jason@redhat.com>
13
14 PR c++/71834 - template-id with too few arguments.
15 * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
16
4aaa9b04 172018-03-19 Nathan Sidwell <nathan@acm.org>
18
1c4a339e 19 PR c++/84835
20 * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
21 * pt.c (build_template_decl): Propagate language linkage.
22
4aaa9b04 23 PR c++/84812
24 * name-lookup.c (set_local_extern_decl_linkage): Defend against
25 ambiguous lookups.
26
7b2c7b75 272018-03-16 Jakub Jelinek <jakub@redhat.com>
28
29 PR c/84910
30 * parser.c (cp_parser_lambda_introducer): Remove trailing space from
31 diagnostics.
32 * method.c (synthesize_method): Likewise.
33 * pt.c (convert_nontype_argument): Likewise.
34
9582b9d8 352018-03-16 Jason Merrill <jason@redhat.com>
36
6e3a6db6 37 PR c++/84720 - ICE with rvalue ref non-type argument.
38 * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
39 (convert_nontype_argument): Revert earlier change.
40
e5392173 41 PR c++/80227 - SFINAE and negative array size.
42 * decl.c (compute_array_index_type): Use
43 build_converted_constant_expr and valid_constant_size_p.
44
612d07ac 45 PR c++/84906 - silent wrong code with ambiguous conversion.
46 * call.c (build_user_type_conversion_1): Set need_temporary_p on
47 ambiguous conversion.
48 (convert_like_real): Check it.
49
9582b9d8 50 PR c++/83937 - wrong C++17 handling of init-list ctor argument.
51 * call.c (build_special_member_call): Don't convert an init-list
52 argument directly to the class type.
53
7604a798 542018-03-16 Jakub Jelinek <jakub@redhat.com>
55
56 PR c++/79937
57 PR c++/82410
58 * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
59 (find_placeholder): Declare.
60 * tree.c (struct replace_placeholders_t): Add exp member.
61 (replace_placeholders_r): Don't walk into ctors with
62 CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
63 d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
64 (replace_placeholders): Initialize data.exp.
65 (find_placeholders_r, find_placeholders): New functions.
66 * typeck2.c (process_init_constructor_record,
67 process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
68 if adding NSDMI on which find_placeholder returns true.
69 * call.c (build_over_call): Don't call replace_placeholders here.
70 * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
71 TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
72 TARGET_EXPR_INITIAL.
73 (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
74 ctor.
75
91735070 762018-03-16 Jason Merrill <jason@redhat.com>
77
78 PR c++/83911 - ICE with multiversioned constructor.
79 * cp-gimplify.c (cp_genericize_r): Replace versioned function with
80 dispatchere here.
81 * call.c (build_over_call): Not here.
82
8da6002a 832018-03-16 Jakub Jelinek <jakub@redhat.com>
84
85 PR c++/84874
86 * decl.c (reshape_init_class): Don't assert d->cur->index == field
87 if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
88
e57bcc46 892018-03-15 Jakub Jelinek <jakub@redhat.com>
90
91 PR c++/84222
92 * cp-tree.h (cp_warn_deprecated_use): Declare.
93 * tree.c (cp_warn_deprecated_use): New function.
94 * typeck2.c (build_functional_cast): Use it.
95 * decl.c (grokparms): Likewise.
96 (grokdeclarator): Likewise. Temporarily push nested class scope
97 around grokparms call for out of class member definitions.
98
4fc774de 992018-03-14 Jason Merrill <jason@redhat.com>
100
41efa9a4 101 PR c++/84820 - no error for invalid qualified-id.
102 * parser.c (cp_parser_make_indirect_declarator): Don't wrap
103 cp_error_declarator.
104
783f1b0f 105 PR c++/84801 - ICE with unexpanded pack in lambda.
106 * pt.c (check_for_bare_parameter_packs): Don't return early for a
107 lambda in non-template context.
108
4fc774de 109 PR c++/81236 - auto variable and auto function
110 * pt.c (tsubst_baselink): Update the type of the BASELINK after
111 mark_used.
112
1227307b 1132018-03-14 Jason Merrill <jason@redhat.com>
114
115 PR c++/83916 - ICE with template template parameters.
116 * pt.c (convert_template_argument): Don't substitute into type of
117 non-type parameter if we don't have enough arg levels.
118 (unify): Likewise.
119
1be31e55 1202018-03-14 Marek Polacek <polacek@redhat.com>
121
122 PR c++/84596
123 * semantics.c (finish_static_assert): Check
124 instantiation_dependent_expression_p instead of
125 {type,value}_dependent_expression_p.
126
a6cdf4f3 1272018-03-13 Paolo Carlini <paolo.carlini@oracle.com>
128 Jason Merrill <jason@redhat.com>
129
130 PR c++/82336 - link error with list-init default argument.
131 * decl.c (check_default_argument): Unshare an initializer list.
132
a6eb1b34 1332018-03-13 Jakub Jelinek <jakub@redhat.com>
134
135 PR c++/84843
136 * decl.c (duplicate_decls): For redefinition of built-in, use error
137 and return error_mark_node. For redeclaration, return error_mark_node
138 rather than olddecl if !flag_permissive.
139
a4306186 1402018-03-13 Jason Merrill <jason@redhat.com>
141
142 PR c++/82565 - ICE with concepts and generic lambda.
143 * pt.c (instantiate_decl): Clear fn_context for lambdas.
144
c1fed38f 1452018-03-13 Jason Merrill <jason@redhat.com>
146
849d6058 147 PR c++/84720 - ICE with rvalue ref non-type argument.
148 * pt.c (convert_nontype_argument): Handle rvalue references.
149
d15ccbe3 150 PR c++/84839 - ICE with decltype of parameter pack.
151 * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
152 instantiating dummy parms.
153
e5cae1a3 154 * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
155 parameter even without -Wpedantic.
156
c1fed38f 157 PR c++/84798 - ICE with auto in abstract function declarator.
158 * parser.c (cp_parser_parameter_declaration_clause): Check
159 parser->default_arg_ok_p.
160
e99466d6 1612018-03-13 Jakub Jelinek <jakub@redhat.com>
162
163 PR c++/84808
164 * constexpr.c (find_array_ctor_elt): Don't use elt reference after
165 first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
166 sizetype. Formatting fixes.
167
33d103ed 1682018-03-12 Jason Merrill <jason@redhat.com>
169
edd55a60 170 PR c++/84355 - ICE with deduction for member class template.
171 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
172 CLASS_PLACEHOLDER_TEMPLATE.
173
33d103ed 174 PR c++/84802 - ICE capturing uninstantiated class.
175 * lambda.c (build_capture_proxy): Call complete_type.
176
3ef7ff1b 1772018-03-09 Jason Merrill <jason@redhat.com>
178
21e96d8d 179 PR c++/84770 - ICE with typedef and parameter pack.
180 * pt.c (verify_unstripped_args_1): Split out from
181 verify_unstripped_args.
182
9aa4a1f0 183 PR c++/84785 - ICE with alias template and default targs.
184 * pt.c (type_unification_real): Set processing_template_decl if
185 saw_undeduced == 1.
186
3ef7ff1b 187 PR c++/84752 - ICE with capture of constexpr array.
188 * call.c (standard_conversion): Set rvaluedness_matches_p on the
189 identity conversion under ck_lvalue.
190
641a7bca 1912018-03-09 Jason Merrill <jason@redhat.com>
6a62aa42 192 Paolo Carlini <paolo.carlini@oracle.com>
193
194 PR c++/71169
195 PR c++/71832
196 * pt.c (any_erroneous_template_args_p): New.
197 * cp-tree.h (any_erroneous_template_args_p): Declare it.
198 * parser.c (cp_parser_class_specifier_1): Use it.
199
80fdc40f 2002018-03-09 Jason Merrill <jason@redhat.com>
201
202 PR c++/84726 - unnecessary capture of constant vars.
203 * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
204 (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
205 * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
206 * lambda.c (is_constant_capture_proxy)
207 (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
208 (prune_lambda_captures): New.
209 (finish_lambda_function): Call prune_lambda_captures.
210
533f67f1 2112018-03-09 Jason Merrill <jason@redhat.com>
212 Jakub Jelinek <jakub@redhat.com>
213
214 PR c++/84076
215 * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
216 build ADDR_EXPR with REFERENCE_TYPE.
217 (build_over_call): For purposes of check_function_arguments, if
218 argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
219 its operand rather than the argument itself.
220
27e726cc 2212018-03-09 Jakub Jelinek <jakub@redhat.com>
222
223 PR c++/84724
224 * decl.c (duplicate_decls): Don't override __* prefixed builtins
225 except for __[^b]*_chk, instead issue permerror and for -fpermissive
226 also a note and return olddecl.
227
a0949cc9 2282018-03-09 Nathan Sidwell <nathan@acm.org>
229
230 PR c++/84733
231 * name-lookup.c (do_pushdecl_with_scope): Only clear
232 current_function_decl when pushing a non-class (i.e. namespace)
233 scope.
234
ffd99ef2 2352018-03-08 Jason Merrill <jason@redhat.com>
236 Jakub Jelinek <jakub@redhat.com>
237
238 PR c++/80598
239 * call.c (build_over_call): In templates set TREE_USED (first_fn) when
240 not calling mark_used for the benefit of -Wunused-function warning.
241
d0e2b7e7 2422018-03-06 Jason Merrill <jason@redhat.com>
243
244 * lambda.c (is_capture_proxy_with_ref): Remove.
245 * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
246
24d5b4f0 2472018-03-06 Marek Polacek <polacek@redhat.com>
248
249 PR c++/84684
250 * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
251 arguments.
252
d5e30f01 2532018-03-06 Alexandre Oliva <aoliva@redhat.com>
254
11a93d7a 255 PR c++/84231
256 * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
257 only while processing template decls.
258 * typeck.c (build_x_conditional_expr): Move wrapping of
259 reference type around type...
260 * call.c (build_conditional_expr_1): ... here. Rename
261 is_lvalue to is_glvalue.
262 * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
263 INDIRECT_REF of COND_EXPR too.
264
47608302 265 PR c++/84593
266 * init.c (build_zero_init_1): Zero-initialize references.
267
d5e30f01 268 PR c++/84492
269 * semantics.c (finish_stmt_expr_expr): Reject unresolved
270 overloads used as stmt expr values.
271
fc25a333 2722018-03-05 Jason Merrill <jason@redhat.com>
273
274 PR c++/84708 - ICE with lambda in local class NSDMI.
275 * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
276 context.
277
c751e2cd 2782018-03-05 Jakub Jelinek <jakub@redhat.com>
279
280 PR c++/84684
281 * constexpr.c (constexpr_call_hasher::equal): Return false if
282 lhs->hash != rhs->hash. Change return 1 to return true and
283 return 0 to return false.
284
3917fefa 2852018-03-05 Nathan Sidwell <nathan@acm.org>
286
287 PR c++/84702
288 * pt.c (process_template_arg): Mark lookup_keep on a default arg.
289
f48ad2d0 2902018-03-05 Marek Polacek <polacek@redhat.com>
291
292 PR c++/84707
293 * decl.c (duplicate_decls): Check DECL_NAME before accessing
294 UDLIT_OPER_P.
295
f990cba0 2962018-03-05 Nathan Sidwell <nathan@acm.org>
297
298 PR c++/84694
299 * friend.c (do_friend): Restore check for identifier_p inside
300 TEMPLATE_ID_EXPR.
301
93fae4a1 3022018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
303
304 PR c++/84618
305 * parser.c (cp_parser_lambda_introducer): Reject any capture not
306 involving a VAR_DECL or a PARM_DECL.
307
fcae3eb4 3082018-03-05 Pádraig Brady <P@draigBrady.com>
309 Jason Merrill <jason@redhat.com>
310 Nathan Sidwell <nathan@acm.org>
311
312 PR c++/84497
313 * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
314
f4c5829e 3152018-03-03 Jason Merrill <jason@redhat.com>
316
317 PR c++/84686 - missing volatile loads.
318 * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
319
c1585b9c 3202018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
321
322 PR c++/71464
323 * optimize.c (maybe_thunk_body): Bail out immediately if either
324 fns[0] or fns[1] is null.
325
51f0c7e2 3262018-03-02 Marek Polacek <polacek@redhat.com>
327
328 PR c++/84578
329 * constexpr.c (get_array_or_vector_nelts): New.
330 (cxx_eval_array_reference): Use it.
331 (cxx_eval_vec_init_1): Likewise.
332 (cxx_eval_store_expression): Likewise.
333
45fb03af 3342018-03-02 Jason Merrill <jason@redhat.com>
335
336 * semantics.c (force_paren_expr): Remove redundant test.
337
15a3655c 3382018-03-02 Marek Polacek <polacek@redhat.com>
339
340 PR c++/84663
341 * decl.c (cp_complete_array_type): Check error_mark_node.
342
624b4ae0 343 PR c++/84664
344 * typeck.c (cp_perform_integral_promotions): Check the result of
345 mark_rvalue_use.
346
f096a90c 3472018-03-02 Jakub Jelinek <jakub@redhat.com>
348
349 PR c++/84662
350 * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
351 RETURN instead of return.
352 <case POINTER_PLUS_EXPR>: Likewise.
353 <case CONVERT_EXPR>: If op0 is error_mark_node, just return
354 it instead of wrapping it into CONVERT_EXPR.
355
bd6f0014 3562018-03-02 Jason Merrill <jason@redhat.com>
357
358 Fix MIPS16 ICE.
359 * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
360
5f9e77dd 3612018-03-02 Marek Polacek <polacek@redhat.com>
362
363 PR c++/84590
364 * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
365 wrapped in VIEW_CONVERT_EXPR.
366
c973012d 3672018-03-01 Martin Sebor <msebor@redhat.com>
368
369 PR c++/84294
370 * decl.c (check_redeclaration_no_default_args): Merge attributes
371 specified on redeclarations of the same function template.
372 Remove dead code.
373
7dffa847 3742018-03-01 Marek Polacek <polacek@redhat.com>
375 Jason Merrill <jason@redhat.com>
376
377 PR c++/84582
378 * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
379 a template.
380 (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
381 * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
382 of instantiate_non_dependent_expr.
383 * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
384
7ebb6d0e 3852018-03-01 Nathan Sidwell <nathan@acm.org>
386
387 PR c++/84434
388 * name-lookup.c (member_vec_dedup): Remove manually peeled
389 iteration. Ignore dependent ctor inheritance.
390
7e178fa3 3912018-03-01 Jason Merrill <jason@redhat.com>
392
393 PR c++/71569 - decltype of template.
394 * parser.c (cp_parser_decltype_expr): Handle missing template args.
395
786721dc 3962018-03-01 Marek Polacek <polacek@redhat.com>
397
398 PR c++/84596
399 * constexpr.c (require_rvalue_constant_expression): New function.
400 * cp-tree.h: Declare it.
401 * semantics.c (finish_static_assert): Use it instead of
402 require_potential_rvalue_constant_expression.
403
45403176 4042018-03-01 Jason Merrill <jason@redhat.com>
405 Alexandre Oliva <aoliva@redhat.com>
406
407 PR c++/71569 - ICE with redundant args on member variable template.
408 * decl.c (start_decl): Handle partial specialization of member
409 variable template.
410 * pt.c (determine_specialization): Allow partial specialization
411 of member variable template without specializing enclosing class.
412 (process_partial_specialization): Improve error message.
413
ef8d0c5b 4142018-02-28 Jason Merrill <jason@redhat.com>
415
416 PR c++/71784 - ICE with ref-qualifier and explicit specialization.
417 * pt.c (determine_specialization): Check ref-qualifier.
418
bcf587f0 4192018-02-28 Jakub Jelinek <jakub@redhat.com>
420
b8cfdc96 421 PR c++/84609
422 * parser.c (cp_parser_attributes_opt): Formatting fix.
423 (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
424 cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
425 New functions.
426 (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
427 instead of tentative parse to peek over optional attribute tokens
428 to check for CPP_COLON after them.
429
bcf587f0 430 PR c++/83871
431 PR c++/83503
432 * pt.c (INCLUDE_STRING): Remove define.
433 (warn_spec_missing_attributes): Use pretty_printer instead of
434 std::string. Fix up inform call so that the list of attributes
435 is in %s argument.
436
3e124ed1 4372018-02-28 Martin Sebor <msebor@redhat.com>
438
439 PR testsuite/84617
440 * decl.c (duplicate_decls): Fully merge attributes const, pure,
441 and malloc.
442
3d78c7ae 4432018-02-28 Nathan Sidwell <nathan@acm.org>
444
445 PR c++/84602
446 * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
447 * name-lookup.c (fields_linear_search): Look in an anon-aggr
448 regardless of want_type.
449 (search_anon_aggr): Just use get_class_binding_direct.
450
e090753c 4512018-02-28 Jakub Jelinek <jakub@redhat.com>
452
453 * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
454 inform_n.
455
0d0f3aca 4562018-02-27 Martin Sebor <msebor@redhat.com>
457
458 * pt.c: Avoid including <string> directly.
459
77628407 4602018-02-27 Martin Sebor <msebor@redhat.com>
461
462 PR c++/83871
463 PR c++/83503
464 * cp-tree.h (warn_spec_missing_attributes): New function.
465 ((check_explicit_specialization): Add an argument. Call the above
466 function.
467 * decl.c (duplicate_decls): Avoid applying primary function template's
468 attributes to its explicit specializations.
469 cp/pt.c (warn_spec_missing_attributes): Define.
470
5876201b 4712018-02-27 HÃ¥kon Sandsmark <hsandsmark@gmail.com>
472
473 PR c++/71546 - lambda init-capture with qualified-id.
474 * parser.c (cp_parser_lambda_introducer): Clear scope after
475 each lambda capture.
476
6e6ee7a0 4772018-02-27 Nathan Sidwell <nathan@acm.org>
478
479 PR c++/84426
480 * name-lookup.h (get_member_slot): Rename ...
481 (find_member_slot): ... here.
482 (add_member_slot): New.
483 * name-lookup.c (member_vec_linear_search): No need to check for
484 NULL slot.
485 (get_member_slot): Rename ...
486 (find_member_slot): ... here. Don't add slot for incomplete class.
487 (add_member_slot): New.
488 * class.c (add_method): Adjust get_member_slot rename. Bail out
489 if push_class_level_binding fails. Create slot and grok
490 properties once we're committed to insertion.
491
6ba0e3e2 4922018-02-27 Jason Merrill <jason@redhat.com>
493
494 PR c++/84489 - dependent default template argument
495 * pt.c (type_unification_real): Handle early substitution failure.
496
fdafeeb7 4972018-02-26 Jason Merrill <jason@redhat.com>
498
bb85f261 499 PR c++/84560 - ICE capturing multi-dimensional VLA.
500 * tree.c (array_of_runtime_bound_p): False if the element is
501 variably-modified.
502
f52b11fe 503 PR c++/84441 - ICE with base initialized from ?:
504 * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
505
9960ad27 506 PR c++/84520 - ICE with generic lambda in NSDMI.
507 * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
508 'this' in a generic lambda instantiation.
509
fdafeeb7 510 PR c++/84559 - ICE with constexpr VLA.
511 * constexpr.c (ensure_literal_type_for_constexpr_object): Check
512 for constexpr variable with VLA type.
513
eb7c25cc 5142018-02-26 Jakub Jelinek <jakub@redhat.com>
515
516 PR c++/84558
517 * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
518 a valid constant initializer. Formatting fixes.
519
4273f1a9 5202018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
521
522 PR c++/84540
523 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
524 returning NULL_TREE.
525 (apply_late_template_attributes): Likewise.
526
e6a3ce8a 5272018-02-26 Jakub Jelinek <jakub@redhat.com>
528
529 PR c++/84557
530 * parser.c (cp_parser_omp_var_list_no_open): Only call
531 cp_parser_lookup_name_simple on names satisfying identifier_p.
532 (cp_parser_oacc_routine): Likewise.
533
372c2d93 5342018-02-26 Jason Merrill <jason@redhat.com>
535
536 PR c++/84551 - ICE with concepts and -g.
537 * parser.c (add_debug_begin_stmt): Do nothing in a concept.
538
033f482d 5392018-02-26 Marek Polacek <polacek@redhat.com>
540
541 PR c++/84325
542 * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
543 non-types.
544
417a5ba0 5452018-02-26 Jason Merrill <jason@redhat.com>
546
547 PR c++/84447 - ICE with deleted inherited ctor with default arg.
548 * call.c (build_over_call): Handle deleted functions in one place.
549
9ee1c5dd 5502018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
551
552 PR c++/84533
553 * decl.c (redeclaration_error_message): Don't try to use
554 DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
555
67ad87d3 5562018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
557
558 * lambda.c (build_capture_proxy): Define static.
559 * cp-tree.h (build_capture_proxy): Remove.
560
490f6696 5612018-02-26 Marek Polacek <polacek@redhat.com>
562
563 PR c++/84537
564 * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
565 if name is error node.
566
ea59dcc9 5672018-02-25 Jason Merrill <jason@redhat.com>
568
569 PR c++/84015 - ICE with class deduction and auto template parm.
570 * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
571
0c703e14 5722018-02-24 Marek Polacek <polacek@redhat.com>
573
574 PR c++/83692
575 * constexpr.c (maybe_constant_init_1): New function.
576 (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
577 (cxx_constant_init): New function.
578 * cp-tree.h (cxx_constant_init): Declare.
579 * typeck2.c (store_init_value): Call cxx_constant_init instead of
580 cxx_constant_value. Move the maybe_constant_init call under an 'else'.
581
9d351e63 5822018-02-22 Jason Merrill <jason@redhat.com>
583
584 PR c++/70468 - ICE with constructor delegation via typedef.
585 * pt.c (tsubst_initializer_list): Check for other mem-initializers
586 with constructor delegation.
587
c4210852 5882018-02-22 Jason Merrill <jason@redhat.com>
589
590 PR c++/84424 - ICE with constexpr and __builtin_shuffle.
591 * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
592 VECTOR_TYPE.
593
276194f4 5942018-02-22 Marek Polacek <polacek@redhat.com>
595
596 PR c++/84493
597 * parser.c (cp_parser_braced_list): Use require_open instead of
598 consume_open.
599
7436dc40 6002018-02-21 Jason Merrill <jason@redhat.com>
601
602 PR c++/84454 - ICE with pack expansion in signature.
603 * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
604
68f67eac 6052018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org>
606
607 * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
608 IF_STMT.
609
120a74e2 6102018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
611
612 PR c++/84446
613 * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
614 on error_mark_node.
615
16335c27 6162018-02-20 Jakub Jelinek <jakub@redhat.com>
617
75436625 618 PR c++/84445
619 * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
620 TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
621
e6df3205 622 PR c++/84449
623 * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
624 returns error_mark_node, return it immediately.
625 (break_out_target_exprs): If cp_walk_tree with bot_manip returns
626 error_mark_node, return error_mark_node.
627
16335c27 628 PR c++/84455
629 * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
630 function_depth to avoid GC during finish_lambda_function.
631
e86f32c0 6322018-02-19 Jason Merrill <jason@redhat.com>
633
634 PR c++/84429 - ICE capturing VLA.
635 * lambda.c (build_capture_proxy): Handle reference refs.
636
83728168 6372018-02-19 Jakub Jelinek <jakub@redhat.com>
638
d3b46eb8 639 PR c++/84448
640 * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
641 either operand is error_mark_node, set current.lhs to that instead of
642 creating a binary op with error_mark_node operands.
643
83728168 644 PR c++/84430
645 * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
646
0c0fac86 6472018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
648
649 PR c++/84348
650 * decl.c (grokdeclarator): Early return error_mark_node upon
651 ill-formed friend declaration.
652
2c572f5f 6532018-02-16 Marek Polacek <polacek@redhat.com>
654 Jakub Jelinek <jakub@redhat.com>
655
656 PR c++/84192
657 * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
658 set *jump_target to anything if jump_target is NULL.
659
5557e6c9 6602018-02-16 Jason Merrill <jason@redhat.com>
661
63cb1fa2 662 PR c++/84151 - unnecessary volatile load with static member.
663 * call.c (build_new_method_call_1): Avoid loading from a volatile
664 lvalue used as the object argument for a static member function.
665
7285637a 666 PR c++/81853 - using-directive and constexpr.
667 * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
668
c2f14a91 669 PR c++/84420 - ICE with structured binding in lambda.
670 * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
671
525ca7cc 672 PR c++/83835 - C++17 error with constructor ctors.
673 * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
674
d3bed086 675 PR c++/82664 - ICE with reference to function template parm.
676 * pt.c (convert_nontype_argument_function): Avoid obfuscationg
677 NOP_EXPRs.
678
5557e6c9 679 PR c++/82764 - C++17 ICE with empty base
680 * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
681
d6eb1d5d 6822018-02-16 Jason Merrill <jason@redhat.com>
683
684 PR c++/84421 - type-dependent if constexpr
685 * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
686
5d4ea37d 6872018-02-16 Nathan Sidwell <nathan@acm.org>
688
689 Deprecate -ffriend-injection.
690 * decl.c (cxx_init_decl_processing): Emit warning on option.
691 * name-lookup.c (do_pushdecl): Emit warning if we push a visible
692 friend.
693
1a60f00e 6942018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
695
696 PR c++/82468
697 * decl.c (check_special_function_return_type): Reject template
698 template parameter in deduction guide.
699
2aa07fb2 7002018-02-16 Nathan Sidwell <nathan@acm.org>
701
702 PR c++/84375
703 * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
704
993c1df1 7052018-02-15 Jason Merrill <jason@redhat.com>
706
7238ae96 707 PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
708 * call.c (convert_like_real): Don't use the copy-list-initialization
709 shortcut for ck_base.
710
acc45438 711 PR c++/84045 - ICE with typedef and noexcept.
712 * except.c (build_noexcept_spec): Use strip_typedefs_expr.
713
f9889f15 714 PR c++/84376 - ICE with omitted template arguments.
715 * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
716
993c1df1 717 PR c++/84368 - wrong error with local variable in variadic lambda.
718 * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
719 local_specializations.
720
8cacebc2 7212018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
722
723 PR c++/84330
724 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
725 as first argument.
726
6a5545d9 7272018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
728
729 PR c++/84350
730 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
731 init, early return.
732
e2f46fbf 7332018-02-14 Nathan Sidwell <nathan@acm.org>
734
735 * decl2.c (mark_vtable_entries): Set input_location to decl's.
736 (c_parse_final_cleanups): Restore input_location after emitting
737 vtables.
738
0b5cd8c1 7392018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
740
741 * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
742 (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
743 auto_deduction_context, tree, int): Add defaults.
744 * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
745 (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
746 tsubst_flags_t argument.
747 * init.c (build_new): Likewise.
748
b868e155 7492018-02-13 Jakub Jelinek <jakub@redhat.com>
750
751 PR c++/84364
752 * typeck.c (check_return_expr): Don't emit -Weffc++ warning
753 about return other than *this in assignment operators if
754 retval is type dependent expression.
755
08de4af3 7562018-02-13 Paolo Carlini <paolo.carlini@oracle.com>
757
758 PR c++/84333
759 * call.c (build_conditional_expr_1): Use cp_save_expr instead of
760 save_expr for the G++ extension.
761
1108bdc1 7622018-02-13 Jason Merrill <jason@redhat.com>
763
02f2ef5e 764 PR c++/84080 - ICE with return type deduction and specialization.
765 * pt.c (determine_specialization): Check uses_template_parms.
766
a5283f32 767 Fix more variadic capture issues.
768 * pt.c (find_parameter_packs_r): Also look at explicit captures.
769 (check_for_bare_parameter_packs): Check current_class_type for
770 lambda context.
771 (extract_locals_r): Handle seeing a full instantiation of a pack.
772 (tsubst_pack_expansion): Likewise. Force lambda capture.
773 * parser.c (cp_parser_lambda_introducer): Don't
774 check_for_bare_parameter_packs.
775
1108bdc1 776 PR c++/84338 - wrong variadic sizeof.
777 * pt.c (argument_pack_select_arg): Like the macro, but look through
778 a pack expansion.
779 (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
780 (extract_fnparm_pack): Do make_pack_expansion.
781 (extract_locals_r): Do strip a pack expansion.
782 * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
783
4aa81625 7842018-02-12 Jakub Jelinek <jakub@redhat.com>
785
786 PR c++/84341
787 * parser.c (cp_parser_binary_expression): Use build_min instead of
788 build2_loc to build the no_toplevel_fold_p toplevel binary expression.
789
8359fa53 7902018-02-12 Nathan Sidwell <nathan@acm.org>
791
792 PR c++/84263
793 * parser.c (cp_parser_decltype): Push and pop
794 deferring_access_checks. Reorganize to avoid goto.
795
228a2cd8 7962018-02-12 Richard Biener <rguenther@suse.de>
797
798 PR c++/84281
799 * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
800 uniform constructors and delay allocating them fully.
801
b448c6f3 8022018-02-09 Jason Merrill <jason@redhat.com>
803
804 PR c++/84036 - ICE with variadic capture.
805 Handle variadic capture proxies more like non-variadic.
806 * lambda.c (build_capture_proxy): Remove workaround.
807 * pt.c (find_parameter_packs_r): The proxy is a pack.
808 (instantiate_class_template_1): Remove dead lambda code.
809 (extract_fnparm_pack): Don't make_pack_expansion.
810 (extract_locals_r): Don't strip a pack expansion.
811 (tsubst_pack_expansion): Handle proxy packs. Use
812 PACK_EXPANSION_EXTRA_ARGS less.
813 (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
814 (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
815 [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
816 (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
817 (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
818
2918f4e9 8192018-02-10 Jakub Jelinek <jakub@redhat.com>
820
821 PR sanitizer/83987
822 * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
823
f3558be0 8242018-02-09 Jason Merrill <jason@redhat.com>
825
826 PR c++/81917 - ICE with void_t and partial specialization.
827 * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
828 calling most_specialized_partial_spec.
829
d9757bb6 8302018-02-09 Nathan Sidwell <nathan@acm.org>
831
832 PR c/84293
833 * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
834 Pass expr location to strict_aliasing_warning.
835
2c92f3e3 8362018-02-09 Jason Merrill <jason@redhat.com>
837
838 PR c++/84296 - ICE with qualified-id in template.
839 PR c++/83714
840 * pt.c (unknown_base_ref_p): New.
841 (instantiation_dependent_scope_ref_p): Use it instead of
842 any_dependent_bases_p.
843
7d8e655d 8442018-02-09 Marek Polacek <polacek@redhat.com>
845 Jakub Jelinek <jakub@redhat.com>
846
847 PR c++/83659
848 * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
849 fold_indirect_ref_1, including poly_*int64. Verify first that
850 tree_fits_poly_int64_p (op01). Formatting fixes.
851
7ab20d7c 8522018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
853
854 * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
855 * lambda.c (build_capture_proxy): Likewise.
856 * search.c (field_access_p): Likewise.
857 * semantics.c (omp_clause_decl, omp_privatize_field,
858 finish_omp_clauses): Likewise.
859
de6c153d 8602018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
861
862 PR c++/83806
863 * typeck.c (decay_conversion): Use mark_rvalue_use for the special
864 case of nullptr too.
865
b1be555e 8662018-02-08 Nathan Sidwell <nathan@acm.org>
867
868 * class.c (finish_struct): Fix std:initializer_list diagnostic
869 formatting.
870
496b0d76 8712018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
872
873 PR c++/83204
874 * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
875
5b444188 8762018-02-07 Jakub Jelinek <jakub@redhat.com>
877
878 PR c++/84082
879 * parser.c (cp_parser_dot_deref_incomplete): New function.
880 (cp_parser_postfix_dot_deref_expression): Use it.
881
f2faade6 8822018-02-07 David Malcolm <dmalcolm@redhat.com>
883
884 PR c++/81610
885 PR c++/80567
886 * name-lookup.c (suggest_rid_p): New function.
887 (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
888 suggest_rid_p.
889
81e7dc36 8902018-02-07 Jason Merrill <jason@redhat.com>
891
892 PR c++/84182 - ICE with captured lambda
893 PR c++/84181
894 * pt.c (extract_locals_r, extract_local_specs): New.
895 (tsubst_pack_expansion): Use them.
896
490319f0 8972018-02-07 Martin Liska <mliska@suse.cz>
898
899 PR c++/84059.
900 * class.c (add_method): Append argument value.
901 * cp-tree.h (maybe_version_functions): Add new argument.
902 * decl.c (decls_match): Call it if a declaration does not
903 have DECL_FUNCTION_VERSIONED.
904 (maybe_version_functions): record argument is added.
905
a9a9828b 9062018-02-05 Marek Polacek <polacek@redhat.com>
907
908 * class.c: Remove unused global variables.
909 (build_primary_vtable): Don't gather statistics.
910 (print_class_statistics): Remove.
911 * cp-tree.h (print_class_statistics): Remove.
912 * tree.c (cxx_print_statistics): Don't call print_class_statistics.
913
3cde3c29 9142018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
915
916 * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
917 * constexpr.c (cx_check_missing_mem_inits): Likewise.
918 * decl.c (next_initializable_field, find_decomp_class_base,
919 cp_finish_decomp): Likewise.
920 * typeck2.c (process_init_constructor_record): Likewise.
921
84be7246 9222018-02-02 Jason Merrill <jason@redhat.com>
923
924 PR c++/84181 - ICE with lambda parm in template argument.
925 * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
926
ba23f9fb 9272018-02-01 Jason Merrill <jason@redhat.com>
928
929 PR c++/84160 - ICE with nested variadic capture.
930 * lambda.c (is_capture_proxy_with_ref): New.
931 (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
932 COMPONENT_REF.
933 * expr.c (mark_use): Use is_capture_proxy_with_ref.
934 * constexpr.c (potential_constant_expression_1): Likewise.
935 * semantics.c (process_outer_var_ref): Likewise.
936
d835b8fe 9372018-02-01 Marek Polacek <polacek@redhat.com>
938
939 PR c++/84125
940 * typeck.c (build_address): Relax the assert when
941 processing_template_decl.
942
ea6ef4c4 9432018-02-01 Jason Merrill <jason@redhat.com>
944
945 PR c++/84126 - ICE with variadic generic lambda
946 PR c++/84036
947 PR c++/82249
948 * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
949 PACK_EXPANSION_EXTRA_ARGS.
950
22db75d7 9512018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
952
953 PR c++/83796
954 * call.c (convert_like_real): If w're initializing from {} explicitly
955 call abstract_virtuals_error_sfinae.
956
1d29f4ea 9572018-01-31 Jason Merrill <jason@redhat.com>
958 Jakub Jelinek <jakub@redhat.com>
959
960 PR c++/83993
961 * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
962 around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
963 on ADDR_EXPR.
964
d7d265db 9652018-01-31 Jakub Jelinek <jakub@redhat.com>
966
967 PR c++/83993
968 * constexpr.c (diag_array_subscript): Emit different diagnostics
969 if TYPE_DOMAIN (arraytype) is NULL.
970 (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
971 with NULL TYPE_DOMAIN use size_zero_node as nelts.
972
67e6b237 9732018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
974
975 PR c++/84092
976 * semantics.c (finish_qualified_id_expr): When handling an
977 UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
978
6fa371d1 9792018-01-31 Marek Polacek <polacek@redhat.com>
980
981 PR c++/84138
982 * cp-gimplify.c (cp_fold): Check if X is an error node before
983 calling useless_type_conversion_p.
984
28d07b9a 9852018-01-30 Jason Merrill <jason@redhat.com>
986
99c72a58 987 PR c++/84091 - ICE with local class in lambda in template.
988 * decl2.c (determine_visibility): Look for outer containing template
989 instantiation.
990
28d07b9a 991 PR c++/84098 - ICE with lambda in template NSDMI.
992 * pt.c (instantiate_class_template_1): Ignore more lambdas.
993
81cc7d9c 9942018-01-29 Jason Merrill <jason@redhat.com>
995
996 PR c++/68810 - wrong location for reinterpret_cast error.
997 * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
998 !dofold.
999
53fa96c0 10002018-01-29 Marek Polacek <polacek@redhat.com>
1001
1002 PR c++/83996
1003 * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1004 => fooarray[1] in offset_int.
1005
f3d71480 10062018-01-29 Jason Merrill <jason@redhat.com>
1007
1008 PR c++/83942 - wrong unused warning with static_cast.
1009 * cvt.c (ocp_convert): Call mark_rvalue_use.
1010
fa01d4a5 10112018-01-26 Jason Merrill <jason@redhat.com>
1012
9bf918f3 1013 PR c++/83956 - wrong dtor error with anonymous union
1014 * method.c (walk_field_subobs): Variant members only affect
1015 deletedness.
1016 (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1017
86dc258c 1018 PR c++/84036 - ICE with variadic capture.
1019 PR c++/82249
1020 * pt.c (tsubst_pack_expansion): When optimizing a simple
1021 substitution, pull a single pack expansion out of its pack.
1022
fa01d4a5 1023 PR c++/82514 - ICE with local class in generic lambda.
1024 * pt.c (regenerated_lambda_fn_p): Remove.
1025 (enclosing_instantiation_of): Don't use it.
1026 (tsubst_function_decl): Call enclosing_instantiation_of.
1027
1028 * pt.c (lookup_template_class_1): Add sanity check.
1029 * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1030
ff0c900f 10312018-01-25 Jakub Jelinek <jakub@redhat.com>
1032
1033 PR c++/84031
1034 * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore
1035 recursive calls that return ret.
1036 (cp_finish_decomp): Ignore unnamed bitfields.
1037
2100de53 10382018-01-23 Jason Merrill <jason@redhat.com>
1039
1040 PR c++/82249 - wrong mismatched pack length error.
1041 * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1042 unsubstituted function parameter pack.
1043
282ea908 10442018-01-23 Paolo Carlini <paolo.carlini@oracle.com>
1045
1046 PR c++/83921
1047 * decl.c (check_for_uninitialized_const_var): Not static; add
1048 bool and tsubst_flags_t parameters; adjust to be used both in
1049 constexpr context and not.
1050 * constexpr.c (potential_constant_expression_1): Use the above.
1051 * cp-tree.h (check_for_uninitialized_const_var): Declare.
1052
5602246c 10532018-01-23 Jason Merrill <jason@redhat.com>
1054
1055 PR c++/83947 - ICE with auto declarations.
1056 * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1057 * decl.c (undeduced_auto_decl): Limit to vars and fns.
1058
33c25b7a 10592018-01-23 David Malcolm <dmalcolm@redhat.com>
1060
1061 PR c++/83974
1062 * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1063 for pointer to member function types.
1064
e2c431bb 10652018-01-23 Jakub Jelinek <jakub@redhat.com>
1066
1067 PR sanitizer/83987
1068 * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1069 DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1070
0ecceb4d 10712018-01-23 Nathan Sidwell <nathan@acm.org>
1072
1073 PR c++/83988
1074 * pt.c (tsubst_baselink): Remove optype assert.
1075 * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1076
eac8f1c4 10772018-01-23 Jakub Jelinek <jakub@redhat.com>
1078
1079 PR c++/83958
1080 * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1081 refers to incomplete type.
1082
ca488d04 10832018-01-23 Nathan Sidwell <nathan@acm.org>
1084
1085 Deprecate ARM-era for scope handling
1086 * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1087 (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1088 cleared.
1089 * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1090 cleanup handling.
1091 * semantics.c (begin_for_scope): Flag_new_for_scope is
1092 boolean-like.
1093 (finish_for_stmt, begin_range_for_stmt): Likewise.
1094
85d7a189 10952018-01-22 Jason Merrill <jason@redhat.com>
1096
0488e949 1097 PR c++/83720
1098 * decl2.c (determine_visibility): Fix template_decl handling
1099 instead of blocking it.
1100
85d7a189 1101 PR c++/83720 - ICE with lambda and LTO.
1102 * decl2.c (determine_visibility): Clear template_decl for
1103 function-scope decls. Propagate anonymous linkage from containing
1104 function.
1105
96fa24ad 11062018-01-22 Marek Polacek <polacek@redhat.com>
1107
1108 PR c++/81933
1109 * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1110 split out anything.
85d7a189 1111
94b3d6a1 11122018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
1113
1114 PR c++/83895
94b3d6a1 1115 * decl.c (grokdeclarator): Don't diagnose extra parens
1116 on typedefs.
1117
85fd1174 11182018-01-19 Jakub Jelinek <jakub@redhat.com>
1119
61a262f9 1120 PR c++/81167
1121 * call.c (joust): Use TREE_TYPE (source) if source is
1122 a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1123
85fd1174 1124 PR c++/83919
1125 * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1126 for direct enum init.
1127 * decl.c (reshape_init): Likewise.
1128
6fe5fea9 11292018-01-19 Marek Polacek <polacek@redhat.com>
1130
1131 * constexpr.c (fold_simple): Simplify.
1132
54fd982d 11332018-01-18 Jason Merrill <jason@redhat.com>
1134
1135 PR c++/83714
1136 * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1137 * pt.c (instantiation_dependent_scope_ref_p): True if
1138 any_dependent_bases_p.
1139
89f57a8f 11402018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
1141
1142 * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1143 vs DECL_NONTRIVIALLY_INITIALIZED_P).
1144
07d8961c 11452018-01-18 Jason Merrill <jason@redhat.com>
1146
1147 PR c++/82461 - constexpr list-initialized member
1148 * constexpr.c (potential_constant_expression_1): Check
1149 TARGET_EXPR_DIRECT_INIT_P.
1150
d3d28fc8 11512018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
1152
1153 PR c++/81013
1154 * decl.c (xref_basetypes): Early return upon error about derived
1155 union.
1156
bc97e231 11572018-01-18 Nathan Sidwell <nathan@acm.org>
1158
1159 PR c++/83160
1160 * cp-tree.h (mark_use): Declare.
1161 * expr.c (mark_use): Make extern.
1162 * call.c (direct_reference_binding): Set inner conv's
1163 rvaluedness_matches_p, if it is an identity.
1164 (convert_like_real): Mark lvalue or rvalue use for identity as
1165 rvaledness_matches_p demands.
1166
d60daad1 11672018-01-18 Jakub Jelinek <jakub@redhat.com>
1168
1169 PR c++/83824
1170 * parser.c (attr_chainon): New function.
1171 (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1172 cp_parser_namespace_definition, cp_parser_init_declarator,
1173 cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1174 cp_parser_gnu_attributes_opt): Use it.
1175 (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1176 cp_parser_objc_struct_declaration): Likewise. Don't reset
1177 prefix_attributes if attributes is error_mark_node.
1178
5d657db9 11792018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1180
1181 PR c++/78344
1182 * decl.c (grokdeclarator): Do not append the error_mark_node
1183 due to an erroneous optional attribute-specifier-seq.
1184
f907d51b 11852018-01-17 Jakub Jelinek <jakub@redhat.com>
1186
1187 PR c++/83897
1188 * cp-gimplify.c (cp_maybe_instrument_return): Handle
1189 CLEANUP_POINT_EXPR.
1190
e89257db 11912018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1192
1193 PR c++/81054
1194 * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1195 error_mark_node when we give an error.
1196 * decl.c (cp_finish_decl): Use the latter.
1197
65e9fe70 11982018-01-17 Nathan Sidwell <nathan@acm.org>
1199
1200 PR c++/83287
1201 * init.c (build_raw_new_expr): Scan list for lookups to keep.
1202
510e5f39 12032018-01-17 David Malcolm <dmalcolm@redhat.com>
1204
1205 PR c++/83814
1206 * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1207 the C++ part. If processing a template, call
1208 fold_non_dependent_expr rather than fully folding.
1209
988a1f54 12102018-01-17 Jason Merrill <jason@redhat.com>
1211
1212 PR c++/81067 - redundant NULL warning.
1213 * call.c (convert_like_real): Restore null_node handling.
1214
4a3d199b 12152018-01-17 Jason Merrill <jason@redhat.com>
1216
1217 PR c++/81843 - ICE with variadic member template.
1218 PR c++/72801
1219 * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1220 template args.
1221
d78e2177 12222018-01-17 David Malcolm <dmalcolm@redhat.com>
1223
1224 PR c++/83799
1225 * pt.c (type_dependent_expression_p): Strip any location wrapper
1226 before testing tree codes.
1227 (selftest::test_type_dependent_expression_p): New function.
1228 (selftest::cp_pt_c_tests): Call it.
1229
40f2a9a2 12302018-01-17 Nathan Sidwell <nathan@acm.org>
1231
1232 PR c++/83739
1233 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1234 this not a final instantiation.
1235
c943fc7b 12362018-01-16 Jason Merrill <jason@redhat.com>
1237
1238 PR c++/83714 - ICE checking return in template.
1239 * typeck.c (check_return_expr): Call build_non_dependent_expr.
1240
9543f485 12412018-01-16 Jakub Jelinek <jakub@redhat.com>
1242
7328bb73 1243 PR c++/83817
1244 * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1245 is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1246 instead of CALL_FROM_THUNK_P.
1247
9543f485 1248 PR c++/83825
1249 * name-lookup.c (member_vec_dedup): Return early if len is 0.
1250 (resort_type_member_vec, set_class_bindings,
1251 insert_late_enum_def_bindings): Use vec qsort method instead of
1252 calling qsort directly.
1253
42979993 12542018-01-15 Martin Sebor <msebor@redhat.com>
1255
1256 PR c++/83588
1257 * class.c (find_flexarrays): Make a record of multiple flexible array
1258 members.
1259
a6ab30a5 12602018-01-12 Jason Merrill <jason@redhat.com>
1261
1262 PR c++/83186 - ICE with static_cast of list-initialized temporary.
1263 * typeck.c (build_static_cast): Use build_non_dependent_expr.
1264
d3e9b3e9 12652018-01-12 Nathan Sidwell <nathan@acm.org>
1266
1267 * cp-tree.h (mark_rvalue_use): Add parm name.
1268 * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1269 mark_rvalue_use.
1270 * call.c (convert_like_real): Fix formatting.
1271
e00197cb 12722018-01-11 Jason Merrill <jason@redhat.com>
1273
1274 PR c++/82728 - wrong -Wunused-but-set-variable
1275 PR c++/82799
1276 PR c++/83690
1277 * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1278 * decl.c (case_conversion): Likewise.
1279 * semantics.c (finish_static_assert): Call
1280 perform_implicit_conversion_flags.
1281
ba9728eb 12822018-01-11 Nathan Sidwell <nathan@acm.org>
1283
1284 * method.c (enum mangling_flags): Delete long-dead enum.
1285
282b84c7 12862018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
1287
1288 * parser.c (cp_parser_std_attribute_spec): When
1289 token_pair::require_open / require_close return false simply
1290 return error_mark_node, avoid duplicate cp_parser_error about
1291 expected '(' / ')', respectively.
1292
d76863c8 12932018-01-10 David Malcolm <dmalcolm@redhat.com>
1294
1295 PR c++/43486
1296 * call.c (null_ptr_cst_p): Strip location wrappers when
1297 converting from '0' to a pointer type in C++11 onwards.
1298 (conversion_null_warnings): Replace comparison with null_node with
1299 call to null_node_p.
1300 (build_over_call): Likewise.
1301 * cp-gimplify.c (cp_fold): Remove the early bailout when
1302 processing_template_decl.
1303 * cp-lang.c (selftest::run_cp_tests): Call
1304 selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1305 * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1306 (selftest::run_cp_tests): Move decl to bottom of file.
1307 (null_node_p): New inline function.
1308 (selftest::cp_pt_c_tests): New decl.
1309 (selftest::cp_tree_c_tests): New decl.
1310 * cvt.c (build_expr_type_conversion): Replace comparison with
1311 null_node with call to null_node_p.
1312 * error.c (args_to_string): Likewise.
1313 * except.c (build_throw): Likewise.
1314 * mangle.c (write_expression): Skip location wrapper nodes.
1315 * parser.c (literal_integer_zerop): New function.
1316 (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1317 the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1318 param of cp_parser_parenthesized_expression_list. When calling
1319 warn_for_memset, replace integer_zerop calls with
1320 literal_integer_zerop, eliminating the double logical negation
1321 cast to bool. Eliminate the special-casing for CONST_DECL in
1322 favor of the fold_for_warn within warn_for_memset.
1323 (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1324 param, defaulting to false. Convert "expr" to a cp_expr, and call
1325 maybe_add_location_wrapper on it when wrap_locations_p is true.
1326 (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1327 the result for RID_ALIGNOF and RID_SIZEOF.
1328 (cp_parser_builtin_offsetof): Likewise.
1329 * pt.c: Include "selftest.h".
1330 (tsubst_copy): Handle location wrappers.
1331 (tsubst_copy_and_build): Likewise.
1332 (build_non_dependent_expr): Likewise.
1333 (selftest::test_build_non_dependent_expr): New function.
1334 (selftest::cp_pt_c_tests): New function.
1335 * tree.c: Include "selftest.h".
1336 (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1337 (selftest::test_lvalue_kind): New function.
1338 (selftest::cp_tree_c_tests): New function.
1339 * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1340 (cp_build_binary_op): Replace comparison with null_node with call
1341 to null_node_p.
1342 (build_address): Use location of operand when building address
1343 expression.
1344
301c8f8f 13452018-01-10 Marek Polacek <polacek@redhat.com>
1346
1347 PR c++/82541
1348 * call.c (build_conditional_expr_1): Check complain before warning.
1349 * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1350 -Wduplicated-branches.
1351
4b97404d 13522018-01-10 Jakub Jelinek <jakub@redhat.com>
1353
1354 PR c++/81327
1355 * call.c (maybe_warn_class_memaccess): Add forward declaration.
1356 Change last argument from tree * to const vec<tree, va_gc> *, adjust
1357 args uses and check number of operands too. Don't strip away any
1358 nops. Use maybe_constant_value when looking for INTEGER_CST args.
1359 Deal with src argument not having pointer type. Check
1360 tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless
1361 test.
1362 (build_over_call): Call maybe_warn_class_memaccess here on the
1363 original arguments.
1364 (build_cxx_call): Rather than here on converted arguments.
1365
aa3d2f1c 13662018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
1367
1368 PR c++/81055
1369 * init.c (build_vec_init): Avoid building an INIT_EXPR with
1370 error_mark_node as second argument.
1371
442c4003 13722018-01-09 Jakub Jelinek <jakub@redhat.com>
1373
1374 PR c++/83734
1375 * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1376 in STATEMENT_LIST. Remove unneeded assert.
1377
f08ee65f 13782018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
1379 Alan Hayward <alan.hayward@arm.com>
1380 David Sherwood <david.sherwood@arm.com>
1381
1382 * constexpr.c (cxx_eval_array_reference): Handle polynomial
1383 VECTOR_CST_NELTS.
1384 (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1385 * call.c (build_conditional_expr_1): Likewise.
1386 * decl.c (cp_finish_decomp): Likewise.
1387 * mangle.c (write_type): Likewise.
1388 * typeck.c (structural_comptypes): Likewise.
1389 (cp_build_binary_op): Likewise.
1390 * typeck2.c (process_init_constructor_array): Likewise.
1391
13da18cc 13922018-01-03 Jakub Jelinek <jakub@redhat.com>
1393
1394 PR c++/83555
1395 * typeck.c (build_static_cast_1): For static casts to reference types,
1396 call build_base_path with flag_delete_null_pointer_checks as nonnull
1397 instead of always false. When -fsanitize=null, call
1398 ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1399 * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1400 call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1401
4f6a5f07 14022018-01-03 Nathan Sidwell <nathan@acm.org>
1403
1404 PR c++/83667
1405 * method.c (make_alias_for): Copy DECL_CONTEXT.
1406
ce4afc5b 14072018-01-03 Marek Polacek <polacek@redhat.com>
1408
1409 PR c++/83592
1410 * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1411
8e8f6434 14122018-01-03 Jakub Jelinek <jakub@redhat.com>
1413
1f04fdff 1414 PR preprocessor/83602
1415 * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1416 for builtin macros.
1417
ca29c574 1418 PR c++/83634
1419 * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1420 error_mark_node, return error_mark_node.
1421
8e8f6434 1422 Update copyright years.
1423
6bc46c46 14242018-01-02 Jakub Jelinek <jakub@redhat.com>
1425
1426 PR c++/83556
1427 * tree.c (replace_placeholders_r): Pass NULL as last argument to
1428 cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and
1429 non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1430 to false and return.
1431 (replace_placeholders): Pass NULL instead of &pset as last argument
1432 to cp_walk_tree.
1433
2e1c71c2 14342018-01-02 Nathan Sidwell <nathan@acm.org>
1435
1436 * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1437 lval var.
7dfbd804 1438\f
8e8f6434 1439Copyright (C) 2018 Free Software Foundation, Inc.
7dfbd804 1440
1441Copying and distribution of this file, with or without modification,
1442are permitted in any medium without royalty provided the copyright
1443notice and this notice are preserved.