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