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