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