[PR c++/84789] do not fail to resolve typename into template-independent
[gcc.git] / gcc / cp / ChangeLog
1 2018-03-22 Alexandre Oliva <aoliva@redhat.com>
2
3 PR c++/84789
4 * pt.c (resolve_typename_type): Drop assert that stopped
5 simplification to template-independent types. Add assert to
6 verify the initial scope is template dependent.
7 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
8 Reparse the id expression as a type-name, not a declarator.
9
10 PR c++/84729
11 * init.c (build_vec_init): Error at parenthesized array init.
12
13 PR c++/84610
14 PR c++/84642
15 PR c++/84942
16 * cp-tree.h (temp_override): New template class, generalizing
17 a cleanup that was only used...
18 * parser.c (cp_parser_parameter_declaration_clause):
19 ... here for auto_is_implicit_function_template_parm_p.
20 (cp_parser_gnu_attributes_opt): Use it here as well.
21 (cp_parser_std_attribute): Likewise.
22
23 2018-03-22 Marek Polacek <polacek@redhat.com>
24
25 PR c++/84854
26 * semantics.c (finish_if_stmt_cond): Check if the type of the condition
27 is boolean.
28
29 2018-03-21 Jason Merrill <jason@redhat.com>
30
31 PR c++/81311 - wrong C++17 overload resolution.
32 * call.c (build_user_type_conversion_1): Remove C++17 code.
33 (conv_binds_ref_to_prvalue): New.
34 (build_over_call): Handle C++17 copy elision.
35 (build_special_member_call): Only do C++17 copy elision here if the
36 argument is already the right type.
37
38 2018-03-21 Alexandre Oliva <aoliva@redhat.com>
39
40 PR c++/71965
41 * init.c (build_vec_init): Silence error, former sorry,
42 without tf_error.
43
44 PR c++/84610
45 PR c++/84642
46 * parser.c (abort_fully_implicit_template_p): New.
47 (cp_parser_skip_to_end_of_statement): Use it.
48 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
49 (finish_fully_implicit_template_p): Clear
50 implicit_template_parms and implicit_template_scope.
51
52 2018-03-21 Paolo Carlini <paolo.carlini@oracle.com>
53
54 PR c++/84972
55 * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
56 error_mark_node when check_array_designated_initializer fails.
57
58 2018-03-21 Jakub Jelinek <jakub@redhat.com>
59
60 PR c++/84961
61 * cp-tree.h (genericize_compound_lvalue): Declare.
62 * typeck.c (genericize_compound_lvalue): New function.
63 (unary_complex_lvalue, cp_build_modify_expr): Use it.
64 * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
65 and PREDECREMENT_EXPR in output and "m" constrained input operands with
66 COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost
67 COMPOUND_EXPR operand.
68
69 2018-03-21 Nathan Sidwell <nathan@acm.org>
70
71 PR c++/85008
72 * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
73 * decl2.c (vague_linkage_p): Likewise.
74
75 2018-03-21 David Malcolm <dmalcolm@redhat.com>
76
77 PR c++/84994
78 * constexpr.c (constexpr_fn_retval): Make non-"static".
79 * cp-tree.h (constexpr_fn_retval): New decl.
80 * search.c (direct_accessor_p): Update leading comment.
81 (reference_accessor_p): Likewise.
82 (field_accessor_p): Replace check that function body is a
83 RETURN_EXPR with a call to constexpr_fn_retval. Fix
84 indentation of "field_type" decl.
85
86 2018-03-21 Nathan Sidwell <nathan@acm.org>
87
88 PR c++/84804
89 * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
90 complete classes.
91
92 2018-03-21 Martin Sebor <msebor@redhat.com>
93
94 PR c++/84850
95 * call.c (first_non_public_field): New template and function.
96 (first_non_trivial_field): New function.
97 (maybe_warn_class_memaccess): Call them.
98
99 2018-03-21 David Malcolm <dmalcolm@redhat.com>
100
101 PR c++/84892
102 * search.c (field_accessor_p): Use class_of_this_parm rather than
103 type_of_this_parm, to check that "this" is a "const T *", rather
104 than a "T *const".
105
106 2018-03-21 Nathan Sidwell <nathan@acm.org>
107
108 * class.c (finish_struct_anon_r): Refactor, deprecate anything
109 other than public non-static data members.
110 * parser.c (cp_parser_init_declarator): Deprecate attributes after
111 parenthesized initializer.
112
113 PR c++/84836
114 * name-lookup.c (update_binding): Correct logic for local binding
115 update.
116
117 2018-03-21 Marek Polacek <polacek@redhat.com>
118
119 PR c++/71638, ICE with NSDMI and reference.
120 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
121 even when we replace an element.
122
123 2018-03-20 Marek Polacek <polacek@redhat.com>
124
125 PR c++/84978, ICE with NRVO.
126 * constexpr.c (cxx_eval_constant_expression): Handle the case when
127 a RESULT_DECL isn't in the hash map.
128
129 2018-03-20 Jason Merrill <jason@redhat.com>
130
131 PR c++/84978, ICE with NRVO.
132 * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
133 (cp_get_callee_fndecl_nofold): New.
134 * cp-gimplify.c (cp_genericize_r): Use it instead.
135 * call.c (check_self_delegation): Likewise.
136
137 2018-03-20 Nathan Sidwell <nathan@acm.org>
138
139 PR c++/84962
140 * name-lookup.c (pushdecl_class_level): Push anon-struct's
141 member_vec, if there is one.
142
143 PR c++/84970
144 * cp-tree.h (lookup_list_keep): Declare.
145 * tree.c (lookup_list_keep): New, broken out of ...
146 (build_min): ... here. Call it.
147 * decl.c (cp_finish_decl): Call lookup_list_keep.
148
149 2018-03-19 Jason Merrill <jason@redhat.com>
150
151 PR c++/84937 - ICE with class deduction and auto.
152 * pt.c (rewrite_template_parm): Fix auto handling.
153
154 2018-03-19 Marek Polacek <polacek@redhat.com>
155
156 PR c++/84925
157 * pt.c (enclosing_instantiation_of): Check if fn is null.
158
159 PR c++/84927
160 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
161 as we evaluate the elements.
162 (cxx_eval_constant_expression): Verify constructor's flags
163 unconditionally.
164
165 2018-03-19 Jason Merrill <jason@redhat.com>
166
167 PR c++/71834 - template-id with too few arguments.
168 * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
169
170 2018-03-19 Nathan Sidwell <nathan@acm.org>
171
172 PR c++/84835
173 * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
174 * pt.c (build_template_decl): Propagate language linkage.
175
176 PR c++/84812
177 * name-lookup.c (set_local_extern_decl_linkage): Defend against
178 ambiguous lookups.
179
180 2018-03-16 Jakub Jelinek <jakub@redhat.com>
181
182 PR c/84910
183 * parser.c (cp_parser_lambda_introducer): Remove trailing space from
184 diagnostics.
185 * method.c (synthesize_method): Likewise.
186 * pt.c (convert_nontype_argument): Likewise.
187
188 2018-03-16 Jason Merrill <jason@redhat.com>
189
190 PR c++/84720 - ICE with rvalue ref non-type argument.
191 * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
192 (convert_nontype_argument): Revert earlier change.
193
194 PR c++/80227 - SFINAE and negative array size.
195 * decl.c (compute_array_index_type): Use
196 build_converted_constant_expr and valid_constant_size_p.
197
198 PR c++/84906 - silent wrong code with ambiguous conversion.
199 * call.c (build_user_type_conversion_1): Set need_temporary_p on
200 ambiguous conversion.
201 (convert_like_real): Check it.
202
203 PR c++/83937 - wrong C++17 handling of init-list ctor argument.
204 * call.c (build_special_member_call): Don't convert an init-list
205 argument directly to the class type.
206
207 2018-03-16 Jakub Jelinek <jakub@redhat.com>
208
209 PR c++/79937
210 PR c++/82410
211 * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
212 (find_placeholder): Declare.
213 * tree.c (struct replace_placeholders_t): Add exp member.
214 (replace_placeholders_r): Don't walk into ctors with
215 CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
216 d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
217 (replace_placeholders): Initialize data.exp.
218 (find_placeholders_r, find_placeholders): New functions.
219 * typeck2.c (process_init_constructor_record,
220 process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
221 if adding NSDMI on which find_placeholder returns true.
222 * call.c (build_over_call): Don't call replace_placeholders here.
223 * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
224 TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
225 TARGET_EXPR_INITIAL.
226 (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
227 ctor.
228
229 2018-03-16 Jason Merrill <jason@redhat.com>
230
231 PR c++/83911 - ICE with multiversioned constructor.
232 * cp-gimplify.c (cp_genericize_r): Replace versioned function with
233 dispatchere here.
234 * call.c (build_over_call): Not here.
235
236 2018-03-16 Jakub Jelinek <jakub@redhat.com>
237
238 PR c++/84874
239 * decl.c (reshape_init_class): Don't assert d->cur->index == field
240 if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
241
242 2018-03-15 Jakub Jelinek <jakub@redhat.com>
243
244 PR c++/84222
245 * cp-tree.h (cp_warn_deprecated_use): Declare.
246 * tree.c (cp_warn_deprecated_use): New function.
247 * typeck2.c (build_functional_cast): Use it.
248 * decl.c (grokparms): Likewise.
249 (grokdeclarator): Likewise. Temporarily push nested class scope
250 around grokparms call for out of class member definitions.
251
252 2018-03-14 Jason Merrill <jason@redhat.com>
253
254 PR c++/84820 - no error for invalid qualified-id.
255 * parser.c (cp_parser_make_indirect_declarator): Don't wrap
256 cp_error_declarator.
257
258 PR c++/84801 - ICE with unexpanded pack in lambda.
259 * pt.c (check_for_bare_parameter_packs): Don't return early for a
260 lambda in non-template context.
261
262 PR c++/81236 - auto variable and auto function
263 * pt.c (tsubst_baselink): Update the type of the BASELINK after
264 mark_used.
265
266 2018-03-14 Jason Merrill <jason@redhat.com>
267
268 PR c++/83916 - ICE with template template parameters.
269 * pt.c (convert_template_argument): Don't substitute into type of
270 non-type parameter if we don't have enough arg levels.
271 (unify): Likewise.
272
273 2018-03-14 Marek Polacek <polacek@redhat.com>
274
275 PR c++/84596
276 * semantics.c (finish_static_assert): Check
277 instantiation_dependent_expression_p instead of
278 {type,value}_dependent_expression_p.
279
280 2018-03-13 Paolo Carlini <paolo.carlini@oracle.com>
281 Jason Merrill <jason@redhat.com>
282
283 PR c++/82336 - link error with list-init default argument.
284 * decl.c (check_default_argument): Unshare an initializer list.
285
286 2018-03-13 Jakub Jelinek <jakub@redhat.com>
287
288 PR c++/84843
289 * decl.c (duplicate_decls): For redefinition of built-in, use error
290 and return error_mark_node. For redeclaration, return error_mark_node
291 rather than olddecl if !flag_permissive.
292
293 2018-03-13 Jason Merrill <jason@redhat.com>
294
295 PR c++/82565 - ICE with concepts and generic lambda.
296 * pt.c (instantiate_decl): Clear fn_context for lambdas.
297
298 2018-03-13 Jason Merrill <jason@redhat.com>
299
300 PR c++/84720 - ICE with rvalue ref non-type argument.
301 * pt.c (convert_nontype_argument): Handle rvalue references.
302
303 PR c++/84839 - ICE with decltype of parameter pack.
304 * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
305 instantiating dummy parms.
306
307 * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
308 parameter even without -Wpedantic.
309
310 PR c++/84798 - ICE with auto in abstract function declarator.
311 * parser.c (cp_parser_parameter_declaration_clause): Check
312 parser->default_arg_ok_p.
313
314 2018-03-13 Jakub Jelinek <jakub@redhat.com>
315
316 PR c++/84808
317 * constexpr.c (find_array_ctor_elt): Don't use elt reference after
318 first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
319 sizetype. Formatting fixes.
320
321 2018-03-12 Jason Merrill <jason@redhat.com>
322
323 PR c++/84355 - ICE with deduction for member class template.
324 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
325 CLASS_PLACEHOLDER_TEMPLATE.
326
327 PR c++/84802 - ICE capturing uninstantiated class.
328 * lambda.c (build_capture_proxy): Call complete_type.
329
330 2018-03-09 Jason Merrill <jason@redhat.com>
331
332 PR c++/84770 - ICE with typedef and parameter pack.
333 * pt.c (verify_unstripped_args_1): Split out from
334 verify_unstripped_args.
335
336 PR c++/84785 - ICE with alias template and default targs.
337 * pt.c (type_unification_real): Set processing_template_decl if
338 saw_undeduced == 1.
339
340 PR c++/84752 - ICE with capture of constexpr array.
341 * call.c (standard_conversion): Set rvaluedness_matches_p on the
342 identity conversion under ck_lvalue.
343
344 2018-03-09 Jason Merrill <jason@redhat.com>
345 Paolo Carlini <paolo.carlini@oracle.com>
346
347 PR c++/71169
348 PR c++/71832
349 * pt.c (any_erroneous_template_args_p): New.
350 * cp-tree.h (any_erroneous_template_args_p): Declare it.
351 * parser.c (cp_parser_class_specifier_1): Use it.
352
353 2018-03-09 Jason Merrill <jason@redhat.com>
354
355 PR c++/84726 - unnecessary capture of constant vars.
356 * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
357 (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
358 * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
359 * lambda.c (is_constant_capture_proxy)
360 (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
361 (prune_lambda_captures): New.
362 (finish_lambda_function): Call prune_lambda_captures.
363
364 2018-03-09 Jason Merrill <jason@redhat.com>
365 Jakub Jelinek <jakub@redhat.com>
366
367 PR c++/84076
368 * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
369 build ADDR_EXPR with REFERENCE_TYPE.
370 (build_over_call): For purposes of check_function_arguments, if
371 argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
372 its operand rather than the argument itself.
373
374 2018-03-09 Jakub Jelinek <jakub@redhat.com>
375
376 PR c++/84724
377 * decl.c (duplicate_decls): Don't override __* prefixed builtins
378 except for __[^b]*_chk, instead issue permerror and for -fpermissive
379 also a note and return olddecl.
380
381 2018-03-09 Nathan Sidwell <nathan@acm.org>
382
383 PR c++/84733
384 * name-lookup.c (do_pushdecl_with_scope): Only clear
385 current_function_decl when pushing a non-class (i.e. namespace)
386 scope.
387
388 2018-03-08 Jason Merrill <jason@redhat.com>
389 Jakub Jelinek <jakub@redhat.com>
390
391 PR c++/80598
392 * call.c (build_over_call): In templates set TREE_USED (first_fn) when
393 not calling mark_used for the benefit of -Wunused-function warning.
394
395 2018-03-06 Jason Merrill <jason@redhat.com>
396
397 * lambda.c (is_capture_proxy_with_ref): Remove.
398 * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
399
400 2018-03-06 Marek Polacek <polacek@redhat.com>
401
402 PR c++/84684
403 * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
404 arguments.
405
406 2018-03-06 Alexandre Oliva <aoliva@redhat.com>
407
408 PR c++/84231
409 * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
410 only while processing template decls.
411 * typeck.c (build_x_conditional_expr): Move wrapping of
412 reference type around type...
413 * call.c (build_conditional_expr_1): ... here. Rename
414 is_lvalue to is_glvalue.
415 * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
416 INDIRECT_REF of COND_EXPR too.
417
418 PR c++/84593
419 * init.c (build_zero_init_1): Zero-initialize references.
420
421 PR c++/84492
422 * semantics.c (finish_stmt_expr_expr): Reject unresolved
423 overloads used as stmt expr values.
424
425 2018-03-05 Jason Merrill <jason@redhat.com>
426
427 PR c++/84708 - ICE with lambda in local class NSDMI.
428 * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
429 context.
430
431 2018-03-05 Jakub Jelinek <jakub@redhat.com>
432
433 PR c++/84684
434 * constexpr.c (constexpr_call_hasher::equal): Return false if
435 lhs->hash != rhs->hash. Change return 1 to return true and
436 return 0 to return false.
437
438 2018-03-05 Nathan Sidwell <nathan@acm.org>
439
440 PR c++/84702
441 * pt.c (process_template_arg): Mark lookup_keep on a default arg.
442
443 2018-03-05 Marek Polacek <polacek@redhat.com>
444
445 PR c++/84707
446 * decl.c (duplicate_decls): Check DECL_NAME before accessing
447 UDLIT_OPER_P.
448
449 2018-03-05 Nathan Sidwell <nathan@acm.org>
450
451 PR c++/84694
452 * friend.c (do_friend): Restore check for identifier_p inside
453 TEMPLATE_ID_EXPR.
454
455 2018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
456
457 PR c++/84618
458 * parser.c (cp_parser_lambda_introducer): Reject any capture not
459 involving a VAR_DECL or a PARM_DECL.
460
461 2018-03-05 Pádraig Brady <P@draigBrady.com>
462 Jason Merrill <jason@redhat.com>
463 Nathan Sidwell <nathan@acm.org>
464
465 PR c++/84497
466 * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
467
468 2018-03-03 Jason Merrill <jason@redhat.com>
469
470 PR c++/84686 - missing volatile loads.
471 * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
472
473 2018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
474
475 PR c++/71464
476 * optimize.c (maybe_thunk_body): Bail out immediately if either
477 fns[0] or fns[1] is null.
478
479 2018-03-02 Marek Polacek <polacek@redhat.com>
480
481 PR c++/84578
482 * constexpr.c (get_array_or_vector_nelts): New.
483 (cxx_eval_array_reference): Use it.
484 (cxx_eval_vec_init_1): Likewise.
485 (cxx_eval_store_expression): Likewise.
486
487 2018-03-02 Jason Merrill <jason@redhat.com>
488
489 * semantics.c (force_paren_expr): Remove redundant test.
490
491 2018-03-02 Marek Polacek <polacek@redhat.com>
492
493 PR c++/84663
494 * decl.c (cp_complete_array_type): Check error_mark_node.
495
496 PR c++/84664
497 * typeck.c (cp_perform_integral_promotions): Check the result of
498 mark_rvalue_use.
499
500 2018-03-02 Jakub Jelinek <jakub@redhat.com>
501
502 PR c++/84662
503 * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
504 RETURN instead of return.
505 <case POINTER_PLUS_EXPR>: Likewise.
506 <case CONVERT_EXPR>: If op0 is error_mark_node, just return
507 it instead of wrapping it into CONVERT_EXPR.
508
509 2018-03-02 Jason Merrill <jason@redhat.com>
510
511 Fix MIPS16 ICE.
512 * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
513
514 2018-03-02 Marek Polacek <polacek@redhat.com>
515
516 PR c++/84590
517 * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
518 wrapped in VIEW_CONVERT_EXPR.
519
520 2018-03-01 Martin Sebor <msebor@redhat.com>
521
522 PR c++/84294
523 * decl.c (check_redeclaration_no_default_args): Merge attributes
524 specified on redeclarations of the same function template.
525 Remove dead code.
526
527 2018-03-01 Marek Polacek <polacek@redhat.com>
528 Jason Merrill <jason@redhat.com>
529
530 PR c++/84582
531 * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
532 a template.
533 (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
534 * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
535 of instantiate_non_dependent_expr.
536 * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
537
538 2018-03-01 Nathan Sidwell <nathan@acm.org>
539
540 PR c++/84434
541 * name-lookup.c (member_vec_dedup): Remove manually peeled
542 iteration. Ignore dependent ctor inheritance.
543
544 2018-03-01 Jason Merrill <jason@redhat.com>
545
546 PR c++/71569 - decltype of template.
547 * parser.c (cp_parser_decltype_expr): Handle missing template args.
548
549 2018-03-01 Marek Polacek <polacek@redhat.com>
550
551 PR c++/84596
552 * constexpr.c (require_rvalue_constant_expression): New function.
553 * cp-tree.h: Declare it.
554 * semantics.c (finish_static_assert): Use it instead of
555 require_potential_rvalue_constant_expression.
556
557 2018-03-01 Jason Merrill <jason@redhat.com>
558 Alexandre Oliva <aoliva@redhat.com>
559
560 PR c++/71569 - ICE with redundant args on member variable template.
561 * decl.c (start_decl): Handle partial specialization of member
562 variable template.
563 * pt.c (determine_specialization): Allow partial specialization
564 of member variable template without specializing enclosing class.
565 (process_partial_specialization): Improve error message.
566
567 2018-02-28 Jason Merrill <jason@redhat.com>
568
569 PR c++/71784 - ICE with ref-qualifier and explicit specialization.
570 * pt.c (determine_specialization): Check ref-qualifier.
571
572 2018-02-28 Jakub Jelinek <jakub@redhat.com>
573
574 PR c++/84609
575 * parser.c (cp_parser_attributes_opt): Formatting fix.
576 (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
577 cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
578 New functions.
579 (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
580 instead of tentative parse to peek over optional attribute tokens
581 to check for CPP_COLON after them.
582
583 PR c++/83871
584 PR c++/83503
585 * pt.c (INCLUDE_STRING): Remove define.
586 (warn_spec_missing_attributes): Use pretty_printer instead of
587 std::string. Fix up inform call so that the list of attributes
588 is in %s argument.
589
590 2018-02-28 Martin Sebor <msebor@redhat.com>
591
592 PR testsuite/84617
593 * decl.c (duplicate_decls): Fully merge attributes const, pure,
594 and malloc.
595
596 2018-02-28 Nathan Sidwell <nathan@acm.org>
597
598 PR c++/84602
599 * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
600 * name-lookup.c (fields_linear_search): Look in an anon-aggr
601 regardless of want_type.
602 (search_anon_aggr): Just use get_class_binding_direct.
603
604 2018-02-28 Jakub Jelinek <jakub@redhat.com>
605
606 * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
607 inform_n.
608
609 2018-02-27 Martin Sebor <msebor@redhat.com>
610
611 * pt.c: Avoid including <string> directly.
612
613 2018-02-27 Martin Sebor <msebor@redhat.com>
614
615 PR c++/83871
616 PR c++/83503
617 * cp-tree.h (warn_spec_missing_attributes): New function.
618 ((check_explicit_specialization): Add an argument. Call the above
619 function.
620 * decl.c (duplicate_decls): Avoid applying primary function template's
621 attributes to its explicit specializations.
622 cp/pt.c (warn_spec_missing_attributes): Define.
623
624 2018-02-27 HÃ¥kon Sandsmark <hsandsmark@gmail.com>
625
626 PR c++/71546 - lambda init-capture with qualified-id.
627 * parser.c (cp_parser_lambda_introducer): Clear scope after
628 each lambda capture.
629
630 2018-02-27 Nathan Sidwell <nathan@acm.org>
631
632 PR c++/84426
633 * name-lookup.h (get_member_slot): Rename ...
634 (find_member_slot): ... here.
635 (add_member_slot): New.
636 * name-lookup.c (member_vec_linear_search): No need to check for
637 NULL slot.
638 (get_member_slot): Rename ...
639 (find_member_slot): ... here. Don't add slot for incomplete class.
640 (add_member_slot): New.
641 * class.c (add_method): Adjust get_member_slot rename. Bail out
642 if push_class_level_binding fails. Create slot and grok
643 properties once we're committed to insertion.
644
645 2018-02-27 Jason Merrill <jason@redhat.com>
646
647 PR c++/84489 - dependent default template argument
648 * pt.c (type_unification_real): Handle early substitution failure.
649
650 2018-02-26 Jason Merrill <jason@redhat.com>
651
652 PR c++/84560 - ICE capturing multi-dimensional VLA.
653 * tree.c (array_of_runtime_bound_p): False if the element is
654 variably-modified.
655
656 PR c++/84441 - ICE with base initialized from ?:
657 * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
658
659 PR c++/84520 - ICE with generic lambda in NSDMI.
660 * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
661 'this' in a generic lambda instantiation.
662
663 PR c++/84559 - ICE with constexpr VLA.
664 * constexpr.c (ensure_literal_type_for_constexpr_object): Check
665 for constexpr variable with VLA type.
666
667 2018-02-26 Jakub Jelinek <jakub@redhat.com>
668
669 PR c++/84558
670 * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
671 a valid constant initializer. Formatting fixes.
672
673 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
674
675 PR c++/84540
676 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
677 returning NULL_TREE.
678 (apply_late_template_attributes): Likewise.
679
680 2018-02-26 Jakub Jelinek <jakub@redhat.com>
681
682 PR c++/84557
683 * parser.c (cp_parser_omp_var_list_no_open): Only call
684 cp_parser_lookup_name_simple on names satisfying identifier_p.
685 (cp_parser_oacc_routine): Likewise.
686
687 2018-02-26 Jason Merrill <jason@redhat.com>
688
689 PR c++/84551 - ICE with concepts and -g.
690 * parser.c (add_debug_begin_stmt): Do nothing in a concept.
691
692 2018-02-26 Marek Polacek <polacek@redhat.com>
693
694 PR c++/84325
695 * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
696 non-types.
697
698 2018-02-26 Jason Merrill <jason@redhat.com>
699
700 PR c++/84447 - ICE with deleted inherited ctor with default arg.
701 * call.c (build_over_call): Handle deleted functions in one place.
702
703 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
704
705 PR c++/84533
706 * decl.c (redeclaration_error_message): Don't try to use
707 DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
708
709 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
710
711 * lambda.c (build_capture_proxy): Define static.
712 * cp-tree.h (build_capture_proxy): Remove.
713
714 2018-02-26 Marek Polacek <polacek@redhat.com>
715
716 PR c++/84537
717 * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
718 if name is error node.
719
720 2018-02-25 Jason Merrill <jason@redhat.com>
721
722 PR c++/84015 - ICE with class deduction and auto template parm.
723 * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
724
725 2018-02-24 Marek Polacek <polacek@redhat.com>
726
727 PR c++/83692
728 * constexpr.c (maybe_constant_init_1): New function.
729 (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
730 (cxx_constant_init): New function.
731 * cp-tree.h (cxx_constant_init): Declare.
732 * typeck2.c (store_init_value): Call cxx_constant_init instead of
733 cxx_constant_value. Move the maybe_constant_init call under an 'else'.
734
735 2018-02-22 Jason Merrill <jason@redhat.com>
736
737 PR c++/70468 - ICE with constructor delegation via typedef.
738 * pt.c (tsubst_initializer_list): Check for other mem-initializers
739 with constructor delegation.
740
741 2018-02-22 Jason Merrill <jason@redhat.com>
742
743 PR c++/84424 - ICE with constexpr and __builtin_shuffle.
744 * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
745 VECTOR_TYPE.
746
747 2018-02-22 Marek Polacek <polacek@redhat.com>
748
749 PR c++/84493
750 * parser.c (cp_parser_braced_list): Use require_open instead of
751 consume_open.
752
753 2018-02-21 Jason Merrill <jason@redhat.com>
754
755 PR c++/84454 - ICE with pack expansion in signature.
756 * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
757
758 2018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org>
759
760 * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
761 IF_STMT.
762
763 2018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
764
765 PR c++/84446
766 * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
767 on error_mark_node.
768
769 2018-02-20 Jakub Jelinek <jakub@redhat.com>
770
771 PR c++/84445
772 * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
773 TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
774
775 PR c++/84449
776 * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
777 returns error_mark_node, return it immediately.
778 (break_out_target_exprs): If cp_walk_tree with bot_manip returns
779 error_mark_node, return error_mark_node.
780
781 PR c++/84455
782 * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
783 function_depth to avoid GC during finish_lambda_function.
784
785 2018-02-19 Jason Merrill <jason@redhat.com>
786
787 PR c++/84429 - ICE capturing VLA.
788 * lambda.c (build_capture_proxy): Handle reference refs.
789
790 2018-02-19 Jakub Jelinek <jakub@redhat.com>
791
792 PR c++/84448
793 * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
794 either operand is error_mark_node, set current.lhs to that instead of
795 creating a binary op with error_mark_node operands.
796
797 PR c++/84430
798 * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
799
800 2018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
801
802 PR c++/84348
803 * decl.c (grokdeclarator): Early return error_mark_node upon
804 ill-formed friend declaration.
805
806 2018-02-16 Marek Polacek <polacek@redhat.com>
807 Jakub Jelinek <jakub@redhat.com>
808
809 PR c++/84192
810 * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
811 set *jump_target to anything if jump_target is NULL.
812
813 2018-02-16 Jason Merrill <jason@redhat.com>
814
815 PR c++/84151 - unnecessary volatile load with static member.
816 * call.c (build_new_method_call_1): Avoid loading from a volatile
817 lvalue used as the object argument for a static member function.
818
819 PR c++/81853 - using-directive and constexpr.
820 * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
821
822 PR c++/84420 - ICE with structured binding in lambda.
823 * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
824
825 PR c++/83835 - C++17 error with constructor ctors.
826 * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
827
828 PR c++/82664 - ICE with reference to function template parm.
829 * pt.c (convert_nontype_argument_function): Avoid obfuscationg
830 NOP_EXPRs.
831
832 PR c++/82764 - C++17 ICE with empty base
833 * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
834
835 2018-02-16 Jason Merrill <jason@redhat.com>
836
837 PR c++/84421 - type-dependent if constexpr
838 * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
839
840 2018-02-16 Nathan Sidwell <nathan@acm.org>
841
842 Deprecate -ffriend-injection.
843 * decl.c (cxx_init_decl_processing): Emit warning on option.
844 * name-lookup.c (do_pushdecl): Emit warning if we push a visible
845 friend.
846
847 2018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
848
849 PR c++/82468
850 * decl.c (check_special_function_return_type): Reject template
851 template parameter in deduction guide.
852
853 2018-02-16 Nathan Sidwell <nathan@acm.org>
854
855 PR c++/84375
856 * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
857
858 2018-02-15 Jason Merrill <jason@redhat.com>
859
860 PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
861 * call.c (convert_like_real): Don't use the copy-list-initialization
862 shortcut for ck_base.
863
864 PR c++/84045 - ICE with typedef and noexcept.
865 * except.c (build_noexcept_spec): Use strip_typedefs_expr.
866
867 PR c++/84376 - ICE with omitted template arguments.
868 * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
869
870 PR c++/84368 - wrong error with local variable in variadic lambda.
871 * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
872 local_specializations.
873
874 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
875
876 PR c++/84330
877 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
878 as first argument.
879
880 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
881
882 PR c++/84350
883 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
884 init, early return.
885
886 2018-02-14 Nathan Sidwell <nathan@acm.org>
887
888 * decl2.c (mark_vtable_entries): Set input_location to decl's.
889 (c_parse_final_cleanups): Restore input_location after emitting
890 vtables.
891
892 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
893
894 * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
895 (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
896 auto_deduction_context, tree, int): Add defaults.
897 * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
898 (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
899 tsubst_flags_t argument.
900 * init.c (build_new): Likewise.
901
902 2018-02-13 Jakub Jelinek <jakub@redhat.com>
903
904 PR c++/84364
905 * typeck.c (check_return_expr): Don't emit -Weffc++ warning
906 about return other than *this in assignment operators if
907 retval is type dependent expression.
908
909 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com>
910
911 PR c++/84333
912 * call.c (build_conditional_expr_1): Use cp_save_expr instead of
913 save_expr for the G++ extension.
914
915 2018-02-13 Jason Merrill <jason@redhat.com>
916
917 PR c++/84080 - ICE with return type deduction and specialization.
918 * pt.c (determine_specialization): Check uses_template_parms.
919
920 Fix more variadic capture issues.
921 * pt.c (find_parameter_packs_r): Also look at explicit captures.
922 (check_for_bare_parameter_packs): Check current_class_type for
923 lambda context.
924 (extract_locals_r): Handle seeing a full instantiation of a pack.
925 (tsubst_pack_expansion): Likewise. Force lambda capture.
926 * parser.c (cp_parser_lambda_introducer): Don't
927 check_for_bare_parameter_packs.
928
929 PR c++/84338 - wrong variadic sizeof.
930 * pt.c (argument_pack_select_arg): Like the macro, but look through
931 a pack expansion.
932 (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
933 (extract_fnparm_pack): Do make_pack_expansion.
934 (extract_locals_r): Do strip a pack expansion.
935 * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
936
937 2018-02-12 Jakub Jelinek <jakub@redhat.com>
938
939 PR c++/84341
940 * parser.c (cp_parser_binary_expression): Use build_min instead of
941 build2_loc to build the no_toplevel_fold_p toplevel binary expression.
942
943 2018-02-12 Nathan Sidwell <nathan@acm.org>
944
945 PR c++/84263
946 * parser.c (cp_parser_decltype): Push and pop
947 deferring_access_checks. Reorganize to avoid goto.
948
949 2018-02-12 Richard Biener <rguenther@suse.de>
950
951 PR c++/84281
952 * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
953 uniform constructors and delay allocating them fully.
954
955 2018-02-09 Jason Merrill <jason@redhat.com>
956
957 PR c++/84036 - ICE with variadic capture.
958 Handle variadic capture proxies more like non-variadic.
959 * lambda.c (build_capture_proxy): Remove workaround.
960 * pt.c (find_parameter_packs_r): The proxy is a pack.
961 (instantiate_class_template_1): Remove dead lambda code.
962 (extract_fnparm_pack): Don't make_pack_expansion.
963 (extract_locals_r): Don't strip a pack expansion.
964 (tsubst_pack_expansion): Handle proxy packs. Use
965 PACK_EXPANSION_EXTRA_ARGS less.
966 (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
967 (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
968 [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
969 (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
970 (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
971
972 2018-02-10 Jakub Jelinek <jakub@redhat.com>
973
974 PR sanitizer/83987
975 * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
976
977 2018-02-09 Jason Merrill <jason@redhat.com>
978
979 PR c++/81917 - ICE with void_t and partial specialization.
980 * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
981 calling most_specialized_partial_spec.
982
983 2018-02-09 Nathan Sidwell <nathan@acm.org>
984
985 PR c/84293
986 * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
987 Pass expr location to strict_aliasing_warning.
988
989 2018-02-09 Jason Merrill <jason@redhat.com>
990
991 PR c++/84296 - ICE with qualified-id in template.
992 PR c++/83714
993 * pt.c (unknown_base_ref_p): New.
994 (instantiation_dependent_scope_ref_p): Use it instead of
995 any_dependent_bases_p.
996
997 2018-02-09 Marek Polacek <polacek@redhat.com>
998 Jakub Jelinek <jakub@redhat.com>
999
1000 PR c++/83659
1001 * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1002 fold_indirect_ref_1, including poly_*int64. Verify first that
1003 tree_fits_poly_int64_p (op01). Formatting fixes.
1004
1005 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
1006
1007 * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1008 * lambda.c (build_capture_proxy): Likewise.
1009 * search.c (field_access_p): Likewise.
1010 * semantics.c (omp_clause_decl, omp_privatize_field,
1011 finish_omp_clauses): Likewise.
1012
1013 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
1014
1015 PR c++/83806
1016 * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1017 case of nullptr too.
1018
1019 2018-02-08 Nathan Sidwell <nathan@acm.org>
1020
1021 * class.c (finish_struct): Fix std:initializer_list diagnostic
1022 formatting.
1023
1024 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
1025
1026 PR c++/83204
1027 * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1028
1029 2018-02-07 Jakub Jelinek <jakub@redhat.com>
1030
1031 PR c++/84082
1032 * parser.c (cp_parser_dot_deref_incomplete): New function.
1033 (cp_parser_postfix_dot_deref_expression): Use it.
1034
1035 2018-02-07 David Malcolm <dmalcolm@redhat.com>
1036
1037 PR c++/81610
1038 PR c++/80567
1039 * name-lookup.c (suggest_rid_p): New function.
1040 (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1041 suggest_rid_p.
1042
1043 2018-02-07 Jason Merrill <jason@redhat.com>
1044
1045 PR c++/84182 - ICE with captured lambda
1046 PR c++/84181
1047 * pt.c (extract_locals_r, extract_local_specs): New.
1048 (tsubst_pack_expansion): Use them.
1049
1050 2018-02-07 Martin Liska <mliska@suse.cz>
1051
1052 PR c++/84059.
1053 * class.c (add_method): Append argument value.
1054 * cp-tree.h (maybe_version_functions): Add new argument.
1055 * decl.c (decls_match): Call it if a declaration does not
1056 have DECL_FUNCTION_VERSIONED.
1057 (maybe_version_functions): record argument is added.
1058
1059 2018-02-05 Marek Polacek <polacek@redhat.com>
1060
1061 * class.c: Remove unused global variables.
1062 (build_primary_vtable): Don't gather statistics.
1063 (print_class_statistics): Remove.
1064 * cp-tree.h (print_class_statistics): Remove.
1065 * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1066
1067 2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
1068
1069 * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1070 * constexpr.c (cx_check_missing_mem_inits): Likewise.
1071 * decl.c (next_initializable_field, find_decomp_class_base,
1072 cp_finish_decomp): Likewise.
1073 * typeck2.c (process_init_constructor_record): Likewise.
1074
1075 2018-02-02 Jason Merrill <jason@redhat.com>
1076
1077 PR c++/84181 - ICE with lambda parm in template argument.
1078 * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1079
1080 2018-02-01 Jason Merrill <jason@redhat.com>
1081
1082 PR c++/84160 - ICE with nested variadic capture.
1083 * lambda.c (is_capture_proxy_with_ref): New.
1084 (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1085 COMPONENT_REF.
1086 * expr.c (mark_use): Use is_capture_proxy_with_ref.
1087 * constexpr.c (potential_constant_expression_1): Likewise.
1088 * semantics.c (process_outer_var_ref): Likewise.
1089
1090 2018-02-01 Marek Polacek <polacek@redhat.com>
1091
1092 PR c++/84125
1093 * typeck.c (build_address): Relax the assert when
1094 processing_template_decl.
1095
1096 2018-02-01 Jason Merrill <jason@redhat.com>
1097
1098 PR c++/84126 - ICE with variadic generic lambda
1099 PR c++/84036
1100 PR c++/82249
1101 * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1102 PACK_EXPANSION_EXTRA_ARGS.
1103
1104 2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
1105
1106 PR c++/83796
1107 * call.c (convert_like_real): If w're initializing from {} explicitly
1108 call abstract_virtuals_error_sfinae.
1109
1110 2018-01-31 Jason Merrill <jason@redhat.com>
1111 Jakub Jelinek <jakub@redhat.com>
1112
1113 PR c++/83993
1114 * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1115 around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1116 on ADDR_EXPR.
1117
1118 2018-01-31 Jakub Jelinek <jakub@redhat.com>
1119
1120 PR c++/83993
1121 * constexpr.c (diag_array_subscript): Emit different diagnostics
1122 if TYPE_DOMAIN (arraytype) is NULL.
1123 (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1124 with NULL TYPE_DOMAIN use size_zero_node as nelts.
1125
1126 2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
1127
1128 PR c++/84092
1129 * semantics.c (finish_qualified_id_expr): When handling an
1130 UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1131
1132 2018-01-31 Marek Polacek <polacek@redhat.com>
1133
1134 PR c++/84138
1135 * cp-gimplify.c (cp_fold): Check if X is an error node before
1136 calling useless_type_conversion_p.
1137
1138 2018-01-30 Jason Merrill <jason@redhat.com>
1139
1140 PR c++/84091 - ICE with local class in lambda in template.
1141 * decl2.c (determine_visibility): Look for outer containing template
1142 instantiation.
1143
1144 PR c++/84098 - ICE with lambda in template NSDMI.
1145 * pt.c (instantiate_class_template_1): Ignore more lambdas.
1146
1147 2018-01-29 Jason Merrill <jason@redhat.com>
1148
1149 PR c++/68810 - wrong location for reinterpret_cast error.
1150 * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1151 !dofold.
1152
1153 2018-01-29 Marek Polacek <polacek@redhat.com>
1154
1155 PR c++/83996
1156 * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1157 => fooarray[1] in offset_int.
1158
1159 2018-01-29 Jason Merrill <jason@redhat.com>
1160
1161 PR c++/83942 - wrong unused warning with static_cast.
1162 * cvt.c (ocp_convert): Call mark_rvalue_use.
1163
1164 2018-01-26 Jason Merrill <jason@redhat.com>
1165
1166 PR c++/83956 - wrong dtor error with anonymous union
1167 * method.c (walk_field_subobs): Variant members only affect
1168 deletedness.
1169 (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1170
1171 PR c++/84036 - ICE with variadic capture.
1172 PR c++/82249
1173 * pt.c (tsubst_pack_expansion): When optimizing a simple
1174 substitution, pull a single pack expansion out of its pack.
1175
1176 PR c++/82514 - ICE with local class in generic lambda.
1177 * pt.c (regenerated_lambda_fn_p): Remove.
1178 (enclosing_instantiation_of): Don't use it.
1179 (tsubst_function_decl): Call enclosing_instantiation_of.
1180
1181 * pt.c (lookup_template_class_1): Add sanity check.
1182 * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1183
1184 2018-01-25 Jakub Jelinek <jakub@redhat.com>
1185
1186 PR c++/84031
1187 * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore
1188 recursive calls that return ret.
1189 (cp_finish_decomp): Ignore unnamed bitfields.
1190
1191 2018-01-23 Jason Merrill <jason@redhat.com>
1192
1193 PR c++/82249 - wrong mismatched pack length error.
1194 * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1195 unsubstituted function parameter pack.
1196
1197 2018-01-23 Paolo Carlini <paolo.carlini@oracle.com>
1198
1199 PR c++/83921
1200 * decl.c (check_for_uninitialized_const_var): Not static; add
1201 bool and tsubst_flags_t parameters; adjust to be used both in
1202 constexpr context and not.
1203 * constexpr.c (potential_constant_expression_1): Use the above.
1204 * cp-tree.h (check_for_uninitialized_const_var): Declare.
1205
1206 2018-01-23 Jason Merrill <jason@redhat.com>
1207
1208 PR c++/83947 - ICE with auto declarations.
1209 * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1210 * decl.c (undeduced_auto_decl): Limit to vars and fns.
1211
1212 2018-01-23 David Malcolm <dmalcolm@redhat.com>
1213
1214 PR c++/83974
1215 * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1216 for pointer to member function types.
1217
1218 2018-01-23 Jakub Jelinek <jakub@redhat.com>
1219
1220 PR sanitizer/83987
1221 * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1222 DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1223
1224 2018-01-23 Nathan Sidwell <nathan@acm.org>
1225
1226 PR c++/83988
1227 * pt.c (tsubst_baselink): Remove optype assert.
1228 * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1229
1230 2018-01-23 Jakub Jelinek <jakub@redhat.com>
1231
1232 PR c++/83958
1233 * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1234 refers to incomplete type.
1235
1236 2018-01-23 Nathan Sidwell <nathan@acm.org>
1237
1238 Deprecate ARM-era for scope handling
1239 * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1240 (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1241 cleared.
1242 * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1243 cleanup handling.
1244 * semantics.c (begin_for_scope): Flag_new_for_scope is
1245 boolean-like.
1246 (finish_for_stmt, begin_range_for_stmt): Likewise.
1247
1248 2018-01-22 Jason Merrill <jason@redhat.com>
1249
1250 PR c++/83720
1251 * decl2.c (determine_visibility): Fix template_decl handling
1252 instead of blocking it.
1253
1254 PR c++/83720 - ICE with lambda and LTO.
1255 * decl2.c (determine_visibility): Clear template_decl for
1256 function-scope decls. Propagate anonymous linkage from containing
1257 function.
1258
1259 2018-01-22 Marek Polacek <polacek@redhat.com>
1260
1261 PR c++/81933
1262 * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1263 split out anything.
1264
1265 2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
1266
1267 PR c++/83895
1268 * decl.c (grokdeclarator): Don't diagnose extra parens
1269 on typedefs.
1270
1271 2018-01-19 Jakub Jelinek <jakub@redhat.com>
1272
1273 PR c++/81167
1274 * call.c (joust): Use TREE_TYPE (source) if source is
1275 a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1276
1277 PR c++/83919
1278 * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1279 for direct enum init.
1280 * decl.c (reshape_init): Likewise.
1281
1282 2018-01-19 Marek Polacek <polacek@redhat.com>
1283
1284 * constexpr.c (fold_simple): Simplify.
1285
1286 2018-01-18 Jason Merrill <jason@redhat.com>
1287
1288 PR c++/83714
1289 * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1290 * pt.c (instantiation_dependent_scope_ref_p): True if
1291 any_dependent_bases_p.
1292
1293 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
1294
1295 * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1296 vs DECL_NONTRIVIALLY_INITIALIZED_P).
1297
1298 2018-01-18 Jason Merrill <jason@redhat.com>
1299
1300 PR c++/82461 - constexpr list-initialized member
1301 * constexpr.c (potential_constant_expression_1): Check
1302 TARGET_EXPR_DIRECT_INIT_P.
1303
1304 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
1305
1306 PR c++/81013
1307 * decl.c (xref_basetypes): Early return upon error about derived
1308 union.
1309
1310 2018-01-18 Nathan Sidwell <nathan@acm.org>
1311
1312 PR c++/83160
1313 * cp-tree.h (mark_use): Declare.
1314 * expr.c (mark_use): Make extern.
1315 * call.c (direct_reference_binding): Set inner conv's
1316 rvaluedness_matches_p, if it is an identity.
1317 (convert_like_real): Mark lvalue or rvalue use for identity as
1318 rvaledness_matches_p demands.
1319
1320 2018-01-18 Jakub Jelinek <jakub@redhat.com>
1321
1322 PR c++/83824
1323 * parser.c (attr_chainon): New function.
1324 (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1325 cp_parser_namespace_definition, cp_parser_init_declarator,
1326 cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1327 cp_parser_gnu_attributes_opt): Use it.
1328 (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1329 cp_parser_objc_struct_declaration): Likewise. Don't reset
1330 prefix_attributes if attributes is error_mark_node.
1331
1332 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1333
1334 PR c++/78344
1335 * decl.c (grokdeclarator): Do not append the error_mark_node
1336 due to an erroneous optional attribute-specifier-seq.
1337
1338 2018-01-17 Jakub Jelinek <jakub@redhat.com>
1339
1340 PR c++/83897
1341 * cp-gimplify.c (cp_maybe_instrument_return): Handle
1342 CLEANUP_POINT_EXPR.
1343
1344 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1345
1346 PR c++/81054
1347 * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1348 error_mark_node when we give an error.
1349 * decl.c (cp_finish_decl): Use the latter.
1350
1351 2018-01-17 Nathan Sidwell <nathan@acm.org>
1352
1353 PR c++/83287
1354 * init.c (build_raw_new_expr): Scan list for lookups to keep.
1355
1356 2018-01-17 David Malcolm <dmalcolm@redhat.com>
1357
1358 PR c++/83814
1359 * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1360 the C++ part. If processing a template, call
1361 fold_non_dependent_expr rather than fully folding.
1362
1363 2018-01-17 Jason Merrill <jason@redhat.com>
1364
1365 PR c++/81067 - redundant NULL warning.
1366 * call.c (convert_like_real): Restore null_node handling.
1367
1368 2018-01-17 Jason Merrill <jason@redhat.com>
1369
1370 PR c++/81843 - ICE with variadic member template.
1371 PR c++/72801
1372 * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1373 template args.
1374
1375 2018-01-17 David Malcolm <dmalcolm@redhat.com>
1376
1377 PR c++/83799
1378 * pt.c (type_dependent_expression_p): Strip any location wrapper
1379 before testing tree codes.
1380 (selftest::test_type_dependent_expression_p): New function.
1381 (selftest::cp_pt_c_tests): Call it.
1382
1383 2018-01-17 Nathan Sidwell <nathan@acm.org>
1384
1385 PR c++/83739
1386 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1387 this not a final instantiation.
1388
1389 2018-01-16 Jason Merrill <jason@redhat.com>
1390
1391 PR c++/83714 - ICE checking return in template.
1392 * typeck.c (check_return_expr): Call build_non_dependent_expr.
1393
1394 2018-01-16 Jakub Jelinek <jakub@redhat.com>
1395
1396 PR c++/83817
1397 * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1398 is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1399 instead of CALL_FROM_THUNK_P.
1400
1401 PR c++/83825
1402 * name-lookup.c (member_vec_dedup): Return early if len is 0.
1403 (resort_type_member_vec, set_class_bindings,
1404 insert_late_enum_def_bindings): Use vec qsort method instead of
1405 calling qsort directly.
1406
1407 2018-01-15 Martin Sebor <msebor@redhat.com>
1408
1409 PR c++/83588
1410 * class.c (find_flexarrays): Make a record of multiple flexible array
1411 members.
1412
1413 2018-01-12 Jason Merrill <jason@redhat.com>
1414
1415 PR c++/83186 - ICE with static_cast of list-initialized temporary.
1416 * typeck.c (build_static_cast): Use build_non_dependent_expr.
1417
1418 2018-01-12 Nathan Sidwell <nathan@acm.org>
1419
1420 * cp-tree.h (mark_rvalue_use): Add parm name.
1421 * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1422 mark_rvalue_use.
1423 * call.c (convert_like_real): Fix formatting.
1424
1425 2018-01-11 Jason Merrill <jason@redhat.com>
1426
1427 PR c++/82728 - wrong -Wunused-but-set-variable
1428 PR c++/82799
1429 PR c++/83690
1430 * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1431 * decl.c (case_conversion): Likewise.
1432 * semantics.c (finish_static_assert): Call
1433 perform_implicit_conversion_flags.
1434
1435 2018-01-11 Nathan Sidwell <nathan@acm.org>
1436
1437 * method.c (enum mangling_flags): Delete long-dead enum.
1438
1439 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
1440
1441 * parser.c (cp_parser_std_attribute_spec): When
1442 token_pair::require_open / require_close return false simply
1443 return error_mark_node, avoid duplicate cp_parser_error about
1444 expected '(' / ')', respectively.
1445
1446 2018-01-10 David Malcolm <dmalcolm@redhat.com>
1447
1448 PR c++/43486
1449 * call.c (null_ptr_cst_p): Strip location wrappers when
1450 converting from '0' to a pointer type in C++11 onwards.
1451 (conversion_null_warnings): Replace comparison with null_node with
1452 call to null_node_p.
1453 (build_over_call): Likewise.
1454 * cp-gimplify.c (cp_fold): Remove the early bailout when
1455 processing_template_decl.
1456 * cp-lang.c (selftest::run_cp_tests): Call
1457 selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1458 * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1459 (selftest::run_cp_tests): Move decl to bottom of file.
1460 (null_node_p): New inline function.
1461 (selftest::cp_pt_c_tests): New decl.
1462 (selftest::cp_tree_c_tests): New decl.
1463 * cvt.c (build_expr_type_conversion): Replace comparison with
1464 null_node with call to null_node_p.
1465 * error.c (args_to_string): Likewise.
1466 * except.c (build_throw): Likewise.
1467 * mangle.c (write_expression): Skip location wrapper nodes.
1468 * parser.c (literal_integer_zerop): New function.
1469 (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1470 the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1471 param of cp_parser_parenthesized_expression_list. When calling
1472 warn_for_memset, replace integer_zerop calls with
1473 literal_integer_zerop, eliminating the double logical negation
1474 cast to bool. Eliminate the special-casing for CONST_DECL in
1475 favor of the fold_for_warn within warn_for_memset.
1476 (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1477 param, defaulting to false. Convert "expr" to a cp_expr, and call
1478 maybe_add_location_wrapper on it when wrap_locations_p is true.
1479 (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1480 the result for RID_ALIGNOF and RID_SIZEOF.
1481 (cp_parser_builtin_offsetof): Likewise.
1482 * pt.c: Include "selftest.h".
1483 (tsubst_copy): Handle location wrappers.
1484 (tsubst_copy_and_build): Likewise.
1485 (build_non_dependent_expr): Likewise.
1486 (selftest::test_build_non_dependent_expr): New function.
1487 (selftest::cp_pt_c_tests): New function.
1488 * tree.c: Include "selftest.h".
1489 (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1490 (selftest::test_lvalue_kind): New function.
1491 (selftest::cp_tree_c_tests): New function.
1492 * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1493 (cp_build_binary_op): Replace comparison with null_node with call
1494 to null_node_p.
1495 (build_address): Use location of operand when building address
1496 expression.
1497
1498 2018-01-10 Marek Polacek <polacek@redhat.com>
1499
1500 PR c++/82541
1501 * call.c (build_conditional_expr_1): Check complain before warning.
1502 * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1503 -Wduplicated-branches.
1504
1505 2018-01-10 Jakub Jelinek <jakub@redhat.com>
1506
1507 PR c++/81327
1508 * call.c (maybe_warn_class_memaccess): Add forward declaration.
1509 Change last argument from tree * to const vec<tree, va_gc> *, adjust
1510 args uses and check number of operands too. Don't strip away any
1511 nops. Use maybe_constant_value when looking for INTEGER_CST args.
1512 Deal with src argument not having pointer type. Check
1513 tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless
1514 test.
1515 (build_over_call): Call maybe_warn_class_memaccess here on the
1516 original arguments.
1517 (build_cxx_call): Rather than here on converted arguments.
1518
1519 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
1520
1521 PR c++/81055
1522 * init.c (build_vec_init): Avoid building an INIT_EXPR with
1523 error_mark_node as second argument.
1524
1525 2018-01-09 Jakub Jelinek <jakub@redhat.com>
1526
1527 PR c++/83734
1528 * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1529 in STATEMENT_LIST. Remove unneeded assert.
1530
1531 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
1532 Alan Hayward <alan.hayward@arm.com>
1533 David Sherwood <david.sherwood@arm.com>
1534
1535 * constexpr.c (cxx_eval_array_reference): Handle polynomial
1536 VECTOR_CST_NELTS.
1537 (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1538 * call.c (build_conditional_expr_1): Likewise.
1539 * decl.c (cp_finish_decomp): Likewise.
1540 * mangle.c (write_type): Likewise.
1541 * typeck.c (structural_comptypes): Likewise.
1542 (cp_build_binary_op): Likewise.
1543 * typeck2.c (process_init_constructor_array): Likewise.
1544
1545 2018-01-03 Jakub Jelinek <jakub@redhat.com>
1546
1547 PR c++/83555
1548 * typeck.c (build_static_cast_1): For static casts to reference types,
1549 call build_base_path with flag_delete_null_pointer_checks as nonnull
1550 instead of always false. When -fsanitize=null, call
1551 ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1552 * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1553 call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1554
1555 2018-01-03 Nathan Sidwell <nathan@acm.org>
1556
1557 PR c++/83667
1558 * method.c (make_alias_for): Copy DECL_CONTEXT.
1559
1560 2018-01-03 Marek Polacek <polacek@redhat.com>
1561
1562 PR c++/83592
1563 * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1564
1565 2018-01-03 Jakub Jelinek <jakub@redhat.com>
1566
1567 PR preprocessor/83602
1568 * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1569 for builtin macros.
1570
1571 PR c++/83634
1572 * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1573 error_mark_node, return error_mark_node.
1574
1575 Update copyright years.
1576
1577 2018-01-02 Jakub Jelinek <jakub@redhat.com>
1578
1579 PR c++/83556
1580 * tree.c (replace_placeholders_r): Pass NULL as last argument to
1581 cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and
1582 non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1583 to false and return.
1584 (replace_placeholders): Pass NULL instead of &pset as last argument
1585 to cp_walk_tree.
1586
1587 2018-01-02 Nathan Sidwell <nathan@acm.org>
1588
1589 * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
1590 lval var.
1591 \f
1592 Copyright (C) 2018 Free Software Foundation, Inc.
1593
1594 Copying and distribution of this file, with or without modification,
1595 are permitted in any medium without royalty provided the copyright
1596 notice and this notice are preserved.