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