]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/cp/ChangeLog
Add range_idx param to range_label::get_text
[thirdparty/gcc.git] / gcc / cp / ChangeLog
1 2018-09-17 David Malcolm <dmalcolm@redhat.com>
2
3 * error.c (range_label_for_type_mismatch::get_text): Update for
4 new param.
5
6 2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
7
8 * typeck2.c (digest_init_r): Fix overlength strings.
9
10 2018-09-13 Ville Voutilainen <ville.voutilainen@gmail.com>
11
12 PR c++/87093
13 * method.c (constructible_expr): We're in an unevaluated context
14 in all cases, not just for class targets.
15
16 2018-09-12 David Malcolm <dmalcolm@redhat.com>
17
18 PR c++/85110
19 * call.c (struct conversion_info): Add "loc" field.
20 (arg_conversion_rejection): Add "loc" param, using it to
21 initialize the new field.
22 (bad_arg_conversion_rejection): Likewise.
23 (explicit_conversion_rejection): Initialize the new field to
24 UNKNOWN_LOCATION.
25 (template_conversion_rejection): Likewise.
26 (add_function_candidate): Pass on the argument location to the new
27 param of arg_conversion_rejection.
28 (add_conv_candidate): Likewise.
29 (build_builtin_candidate): Likewise.
30 (build_user_type_conversion_1): Likewise.
31 (single_z_candidate): New function.
32 (maybe_get_bad_conversion_for_unmatched_call): New function.
33 (complain_about_bad_argument): New function, based on part of
34 convert_for_assignment.
35 (build_new_method_call_1): Split out handling of the "no viable
36 candidates" case into...
37 (complain_about_no_candidates_for_method_call): ...this new
38 function, and use the new functions above to special-case the
39 handling of a single non-viable candidate due to a bad argument.
40 * cp-tree.h (complain_about_bad_argument): New decl.
41 * typeck.c (convert_for_assignment): Split out one error-handling
42 case into complain_about_bad_argument.
43
44 2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
45 Julian Brown <julian@codesourcery.com>
46
47 PR middle-end/86336
48 * semantics.c (finish_omp_clauses): Treat C++ references the same in
49 OpenACC as OpenMP.
50
51 2018-08-28 Martin Liska <mliska@suse.cz>
52
53 * constexpr.c (cxx_eval_call_expression): Add quotes
54 to -fconstexpr-depth=.
55
56 2018-09-10 Marek Polacek <polacek@redhat.com>
57
58 * class.c (build_vtbl_ref): Remove.
59 (build_vtbl_ref_1): Rename to build_vtbl_ref.
60 (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
61
62 2018-09-08 Marek Polacek <polacek@redhat.com>
63
64 PR c++/87150 - wrong ctor with maybe-rvalue semantics.
65 * call.c (struct conversion): Update commentary.
66 (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
67 for ck_base.
68
69 2018-09-08 Jason Merrill <jason@redhat.com>
70
71 PR c++/86678 - constexpr function with non-constant after return.
72 * constexpr.c (potential_constant_expression_1): Add jump_target.
73 (breaks): Check for BREAK_STMT.
74 (continues): Check for CONTINUE_STMT.
75
76 2018-09-08 Marek Polacek <polacek@redhat.com>
77
78 * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
79 RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
80
81 2018-09-07 Marek Polacek <polacek@redhat.com>
82
83 PR c++/87152 - range-based for loops with initializer broken in templates.
84 * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
85 Recur into RANGE_FOR_INIT_STMT.
86 * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
87 * cp-tree.h (RANGE_FOR_INIT_STMT): Define.
88 * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
89 RANGE_FOR_INIT_STMT.
90 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
91 RANGE_FOR_INIT_STMT.
92 * semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
93 Do put the init statement in RANGE_FOR_INIT_STMT.
94 (finish_range_for_decl): Pop it for templates.
95
96 2018-09-06 Bernd Edlinger <bernd.edlinger@hotmail.de>
97
98 * decl.c (check_initializer): Call cp_complete_array_type.
99
100 2018-09-05 Marek Polacek <polacek@redhat.com>
101
102 PR c++/87109, wrong overload with ref-qualifiers.
103 * call.c (build_user_type_conversion_1): Use NULL instead of 0. Bail
104 out if performing the maybe-rvalue overload resolution and a conversion
105 function is getting called.
106
107 PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
108 * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
109 to std::move or std::forward.
110 (is_std_forward_p): New function.
111
112 2018-09-05 Pádraig Brady <p@draigbrady.com>
113
114 PR c++/87185
115 * lambda.c (prune_lambda_captures): Protect against const_vars.get
116 returning NULL.
117
118 2018-09-04 Marek Polacek <polacek@redhat.com>
119
120 * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
121 * except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P.
122 * typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK
123 parameter.
124 (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
125 (check_return_expr): Likewise.
126
127 2018-09-03 Paolo Carlini <paolo.carlini@oracle.com>
128
129 PR c++/84980
130 * constraint.cc (finish_shorthand_constraint): Early return if the
131 constraint is erroneous.
132
133 2018-09-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
134
135 * decl.c (eval_check_narrowing): Remove.
136 (check_initializer): Move call to braced_list_to_string from here ...
137 * typeck2.c (store_init_value): ... to here.
138 (digest_init_r): Remove handing of signed/unsigned char strings.
139
140 2018-08-31 Nathan Sidwell <nathan@acm.org>
141
142 PR c++/87155
143 PR c++/84707
144 * name-lookup.c (name_lookup::search_namespace): Don't look at
145 inlines when searching for NULL names.
146
147 * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
148 of return types and parms.
149 * parser.c (cp_parser_parameter_declaration_clause): Likewise,
150 '()' always means '(void)'.
151
152 2018-08-29 Jakub Jelinek <jakub@redhat.com>
153
154 PR c++/87095
155 * decl.c (begin_destructor_body): If current_class_type has
156 virtual bases and the primary base is nearly empty virtual base,
157 voidify clearing of vptr and make it conditional on in-charge
158 argument.
159
160 2018-08-29 Paolo Carlini <paolo.carlini@oracle.com>
161
162 PR c++/85265
163 * parser.c (cp_parser_introduction_list): If cp_parser_identifier
164 returns error_mark_node early exit the loop.
165 (cp_parser_template_introduction): Improve error-recovery, remove
166 error call about empty introduction-list.
167
168 2018-08-29 David Malcolm <dmalcolm@redhat.com>
169
170 PR c++/85110
171 * call.c (print_conversion_rejection): Add "fn" param and use it
172 for "no known conversion" messages to underline the pertinent
173 param.
174 (print_z_candidate): Supply "fn" to the new param above.
175
176 2018-08-29 Jakub Jelinek <jakub@redhat.com>
177
178 PR c++/87122
179 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
180 processing_template_decl and decl is structured binding decl, call
181 cp_finish_decomp.
182
183 2018-08-28 Paolo Carlini <paolo.carlini@oracle.com>
184
185 PR c++/86546
186 * decl.c (finish_case_label): If the type is erroneous early
187 return error_mark_node.
188
189 2018-08-27 David Malcolm <dmalcolm@redhat.com>
190
191 PR c++/63392
192 * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
193 hint.
194
195 2018-08-27 Jakub Jelinek <jakub@redhat.com>
196
197 PR c++/86993
198 * cp-tree.h (cxx_readonly_error): Add location_t argument.
199 * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
200 ERROR_FOR_ASSIGNMENT macro and readonly_error. Add LOC argument
201 to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
202 pass LOC to it. Formatting fixes.
203 * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
204 (cp_build_modify_expr): Pass loc to cxx_readonly_error.
205 * semantics.c (finish_asm_stmt): Pass input_location to
206 cxx_readonly_error.
207
208 2018-08-27 David Malcolm <dmalcolm@redhat.com>
209
210 PR c++/87091
211 * decl.c (grokdeclarator): Update for conversion of show_caret_p
212 to a tri-state.
213 * error.c (cp_printer): Likewise.
214 * name-lookup.c (maybe_suggest_missing_std_header): Update call to
215 maybe_add_include_fixit to suggest overriding the location, as it
216 is for a note.
217 * parser.c (cp_parser_string_literal): Update for conversion of
218 show_caret_p to a tri-state.
219 (cp_parser_elaborated_type_specifier): Likewise.
220 (set_and_check_decl_spec_loc): Likewise.
221 * pt.c (listify): Update call to maybe_add_include_fixit to not
222 override the location, as it is for an error.
223 * rtti.c (typeid_ok_p): Likewise.
224
225 2018-08-27 Martin Liska <mliska@suse.cz>
226
227 * call.c (build_call_a): Use new function
228 fndecl_built_in_p and remove check for FUNCTION_DECL if
229 possible.
230 (build_cxx_call): Likewise.
231 * constexpr.c (constexpr_fn_retval): Likewise.
232 (cxx_eval_builtin_function_call): Likewise.
233 (cxx_eval_call_expression): Likewise.
234 (potential_constant_expression_1): Likewise.
235 * cp-gimplify.c (cp_gimplify_expr): Likewise.
236 (cp_fold): Likewise.
237 * decl.c (decls_match): Likewise.
238 (validate_constexpr_redeclaration): Likewise.
239 (duplicate_decls): Likewise.
240 (make_rtl_for_nonlocal_decl): Likewise.
241 * name-lookup.c (consider_binding_level): Likewise.
242 (cp_emit_debug_info_for_using): Likewise.
243 * semantics.c (finish_call_expr): Likewise.
244 * tree.c (builtin_valid_in_constant_expr_p): Likewise.
245
246 2018-08-26 Marek Polacek <polacek@redhat.com>
247
248 PR c++/87080
249 * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.
250
251 PR c++/87029, Implement -Wredundant-move.
252 * typeck.c (treat_lvalue_as_rvalue_p): New function.
253 (maybe_warn_pessimizing_move): Call convert_from_reference.
254 Warn about redundant moves.
255
256 2018-08-24 Marek Polacek <polacek@redhat.com>
257
258 PR c++/67012
259 PR c++/86942
260 * decl.c (grokdeclarator): Disallow functions with trailing return
261 type with decltype(auto) as its type. Also check the function if
262 it's inner declarator doesn't exist
263
264 2018-08-21 Marek Polacek <polacek@redhat.com>
265
266 PR c++/86499
267 * parser.c (cp_parser_lambda_introducer): Give error if a non-local
268 lambda has a capture-default.
269
270 2018-08-21 Paolo Carlini <paolo.carlini@oracle.com>
271
272 * decl.c (check_static_variable_definition): Change to return void.
273
274 2018-08-21 Marek Polacek <polacek@redhat.com>
275
276 PR c++/86981, Implement -Wpessimizing-move.
277 * typeck.c (decl_in_std_namespace_p): New.
278 (is_std_move_p): New.
279 (maybe_warn_pessimizing_move): New.
280 (can_do_nrvo_p): New, factored out of ...
281 (check_return_expr): ... here. Warn about potentially harmful
282 std::move in a return statement.
283
284 PR c++/65043
285 * call.c (standard_conversion): Set check_narrowing.
286 * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
287 than comparing with INTEGER_TYPE.
288
289 * cp-tree.h: Fix typo.
290
291 2018-08-20 David Malcolm <dmalcolm@redhat.com>
292
293 PR other/84889
294 * call.c (build_user_type_conversion_1): Add auto_diagnostic_group
295 instance(s).
296 (print_error_for_call_failure): Likewise.
297 (build_op_call_1): Likewise.
298 (build_conditional_expr_1): Likewise.
299 (build_new_op_1): Likewise.
300 (build_op_delete_call): Likewise.
301 (convert_like_real): Likewise.
302 (build_over_call): Likewise.
303 (build_new_method_call_1): Likewise.
304 (joust): Likewise.
305 * class.c (check_tag): Likewise.
306 (finish_struct_anon_r): Likewise.
307 (one_inherited_ctor): Likewise.
308 (finalize_literal_type_property): Likewise.
309 (explain_non_literal_class): Likewise.
310 (find_flexarrays): Likewise.
311 (resolve_address_of_overloaded_function): Likewise.
312 * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
313 (is_valid_constexpr_fn): Likewise.
314 (cx_check_missing_mem_inits): Likewise.
315 * cp-gimplify.c (cp_genericize_r): Likewise.
316 * cvt.c (maybe_warn_nodiscard): Likewise.
317 * decl.c (warn_extern_redeclared_static): Likewise.
318 (check_redeclaration_exception_specification): Likewise.
319 (check_no_redeclaration_friend_default_args): Likewise.
320 (duplicate_decls): Likewise.
321 (redeclaration_error_message): Likewise.
322 (warn_misplaced_attr_for_class_type): Likewise.
323 * decl2.c (finish_static_data_member_decl): Likewise.
324 (no_linkage_error): Likewise.
325 (cp_warn_deprecated_use): Likewise.
326 * error.c (qualified_name_lookup_error): Likewise.
327 * friend.c (make_friend_class): Likewise.
328 (do_friend): Likewise.
329 * init.c (perform_member_init): Likewise.
330 (build_new_1): Likewise.
331 (build_vec_delete_1): Likewise.
332 (build_delete): Likewise.
333 * lex.c (unqualified_name_lookup_error): Likewise.
334 * name-lookup.c (check_extern_c_conflict): Likewise.
335 (inform_shadowed): New function.
336 (check_local_shadow): Add auto_diagnostic_group instances,
337 replacing goto "inform_shadowed" label with call to subroutine.
338 (set_local_extern_decl_linkage): Add auto_diagnostic_group
339 instance(s).
340 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
341 (cp_parser_namespace_name): Likewise.
342 * pt.c (check_specialization_namespace): Likewise.
343 (check_template_variable): Likewise.
344 (warn_spec_missing_attributes): Likewise.
345 (check_explicit_specialization): Likewise.
346 (process_partial_specialization): Likewise.
347 (lookup_template_class_1): Likewise.
348 (finish_template_variable): Likewise.
349 (do_auto_deduction): Likewise.
350 * search.c (check_final_overrider): Likewise.
351 (look_for_overrides_r): Likewise.
352 * tree.c (maybe_warn_parm_abi): Likewise.
353 * typeck.c (cxx_sizeof_expr): Likewise.
354 (cp_build_function_call_vec): Likewise.
355 (cp_build_binary_op): Likewise.
356 (convert_for_assignment): Likewise.
357 (maybe_warn_about_returning_address_of_local): Likewise.
358 * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
359 (check_narrowing): Likewise.
360
361 2018-08-17 David Malcolm <dmalcolm@redhat.com>
362
363 * typeck.c (string_conv_p): Extract location from EXP and use it
364 in preference to input_location when issuing warnings.
365
366 2018-08-15 David Malcolm <dmalcolm@redhat.com>
367
368 * call.c: Include "gcc-rich-location.h".
369 (convert_like_real): Add range label for "invalid conversion"
370 diagnostic.
371 (perform_implicit_conversion_flags): Add type label to the
372 "could not convert" error.
373 * error.c: Include "gcc-rich-location.h".
374 (range_label_for_type_mismatch::get_text): New function.
375 * typeck.c (convert_for_assignment): Add type label to
376 the "cannot convert" error if a location is available.
377
378 2018-08-15 Paolo Carlini <paolo.carlini@oracle.com>
379
380 * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
381 emit an error instead of a permerror.
382
383 2018-08-13 Marek Polacek <polacek@redhat.com>
384
385 PR c++/57891
386 * call.c (struct conversion): Add check_narrowing_const_only.
387 (build_converted_constant_expr): Set check_narrowing and
388 check_narrowing_const_only. Give error if expr is error node.
389 (convert_like_real): Pass it to check_narrowing.
390 * cp-tree.h (check_narrowing): Add a default parameter.
391 * decl.c (compute_array_index_type): Use input_location instead of
392 location_of.
393 * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
394 * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
395 expressions. Call maybe_constant_value instead of
396 fold_non_dependent_expr. Don't mention { } in diagnostic. Only check
397 narrowing for constants if CONST_ONLY.
398
399 2018-08-13 Martin Sebor <msebor@redhat.com>
400
401 PR tree-optimization/71625
402 * decl.c (check_initializer): Call braced_list_to_string.
403 (eval_check_narrowing): New function.
404 * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
405 as initilizers for all narrow character types.
406
407 2018-08-13 Marek Polacek <polacek@redhat.com>
408
409 P0806R2 - Deprecate implicit capture of this via [=]
410 * lambda.c (add_default_capture): Formatting fixes. Warn about
411 deprecated implicit capture of this via [=].
412
413 PR c++/86915
414 * decl.c (create_array_type_for_decl): Handle null name.
415
416 2018-08-10 Jason Merrill <jason@redhat.com>
417
418 PR c++/86728 - C variadic generic lambda.
419 * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
420 a pack if it's followed by a declarator-id.
421
422 2018-08-08 Jakub Jelinek <jakub@redhat.com>
423
424 P0595R1 - is_constant_evaluated
425 * cp-tree.h (enum cp_built_in_function): New.
426 (maybe_constant_init): Add pretend_const_required argument.
427 * typeck2.c (store_init_value): Pass true as new argument to
428 maybe_constant_init.
429 * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
430 for BUILT_IN_UNREACHABLE.
431 (struct constexpr_ctx): Add pretend_const_required field.
432 (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
433 macro. Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED. Check also
434 DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
435 (cxx_eval_outermost_constant_expr): Add pretend_const_required
436 argument, initialize pretend_const_required field in ctx. If the
437 result is TREE_CONSTANT and non_constant_p, retry with
438 pretend_const_required false if it was true.
439 (is_sub_constant_expr): Initialize pretend_const_required_field in
440 ctx.
441 (cxx_constant_value): Pass true as pretend_const_required to
442 cxx_eval_outermost_constant_expr.
443 (maybe_constant_value): Pass false as pretend_const_required to
444 cxx_eval_outermost_constant_expr.
445 (fold_non_dependent_expr): Likewise.
446 (maybe_constant_init_1): Add pretend_const_required argument, pass it
447 down to cxx_eval_outermost_constant_expr. Pass !allow_non_constant
448 instead of false as strict to cxx_eval_outermost_constant_expr.
449 (maybe_constant_init): Add pretend_const_required argument, pass it
450 down to maybe_constant_init_1.
451 (cxx_constant_init): Pass true as pretend_const_required to
452 maybe_constant_init_1.
453 * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
454 CP_BUILT_IN_IS_CONSTANT_EVALUATED.
455 (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
456 * decl.c: Include langhooks.h.
457 (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
458 built-in.
459 * tree.c (builtin_valid_in_constant_expr_p): Return true for
460 CP_BUILT_IN_IS_CONSTANT_EVALUATED.
461 * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
462
463 PR c++/86836
464 * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
465 before tsubst_init, not after it.
466
467 PR c++/86738
468 * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
469 NULL pointer set *non_constant_p to true.
470 (cxx_eval_component_reference): For dereferencing of a NULL pointer,
471 set *non_constant_p to true and return t.
472
473 2018-08-07 Paolo Carlini <paolo.carlini@oracle.com>
474
475 PR c++/59480, DR 136
476 * decl.c (check_no_redeclaration_friend_default_args): New.
477 (duplicate_decls): Use the latter; also check that a friend
478 declaration specifying default arguments is a definition.
479
480 2018-08-07 Ville Voutilainen <ville.voutilainen@gmail.com>
481
482 PR c++/79133
483 * name-lookup.c (check_local_shadow): Reject captures and parameters
484 with the same name.
485
486 2018-08-06 Marek Polacek <polacek@redhat.com>
487
488 PR c++/86767
489 * constexpr.c (cxx_eval_statement_list): Handle continue.
490
491 2018-08-03 David Malcolm <dmalcolm@redhat.com>
492 Jonathan Wakely <jwakely@redhat.com>
493
494 * decl.c: Include "gcc-rich-location.h".
495 (add_return_star_this_fixit): New function.
496 (finish_function): When warning about missing return statements in
497 functions returning non-void, add a "return *this;" fix-it hint for
498 assignment operators.
499
500 2018-08-03 Jason Merrill <jason@redhat.com>
501
502 PR c++/86706
503 * class.c (build_base_path): Use currently_open_class.
504
505 2018-08-02 David Malcolm <dmalcolm@redhat.com>
506
507 * error.c (cxx_print_error_function): Duplicate "file" before
508 passing it to pp_set_prefix.
509 (cp_print_error_function): Use pp_take_prefix when saving the
510 existing prefix.
511
512 2018-08-02 Richard Biener <rguenther@suse.de>
513
514 PR c++/86763
515 * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
516 to the CLASSTYPE_AS_BASE.
517
518 2018-08-01 Martin Sebor <msebor@redhat.com>
519
520 PR tree-optimization/86650
521 * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
522 TREE_BLOCK (t) from within percent_K_format to this callsite.
523
524 2018-08-01 Paolo Carlini <paolo.carlini@oracle.com>
525
526 PR c++/86661
527 * class.c (note_name_declared_in_class): Use location_of in permerror
528 instead of DECL_SOURCE_LOCATION (for OVERLOADs).
529
530 2018-07-31 Tom de Vries <tdevries@suse.de>
531
532 PR debug/86687
533 * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
534
535 2018-07-31 Jakub Jelinek <jakub@redhat.com>
536
537 P1008R1 - prohibit aggregates with user-declared constructors
538 * class.c (check_bases_and_members): For C++2a set
539 CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
540 type_has_user_provided_or_explicit_constructor.
541
542 2018-07-31 Martin Liska <mliska@suse.cz>
543
544 PR c++/86653
545 * parser.c (cp_parser_condition): Initialize non_constant_p
546 to false.
547
548 2018-07-28 David Malcolm <dmalcolm@redhat.com>
549
550 * error.c (cp_printer): In the leading comment, move "%H" and "%I"
551 into alphabetical order, and add missing "%G" and "%K". Within
552 the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
553 cases are in alphabetical order.
554
555 2018-07-25 Jakub Jelinek <jakub@redhat.com>
556
557 * cp-tree.h (enum cp_tree_index): Add
558 CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
559 and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
560 (abi_tag_identifier, aligned_identifier, begin_identifier,
561 end_identifier, get__identifier, gnu_identifier,
562 tuple_element_identifier, tuple_size_identifier, type_identifier,
563 value_identifier, fun_identifier, closure_identifier): Define.
564 * decl.c (initialize_predefined_identifiers): Initialize the above
565 identifiers.
566 (get_tuple_size): Use tuple_size_identifier instead of
567 get_identifier ("tuple_size") and value_identifier instead of
568 get_identifier ("value").
569 (get_tuple_element_type): Use tuple_element_identifier instead of
570 get_identifier ("tuple_element") and type_identifier instead of
571 get_identifier ("type").
572 (get_tuple_decomp_init): Use get__identifier instead of
573 get_identifier ("get").
574 * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
575 get_identifier ("_FUN").
576 * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
577 instead of get_identifier ("__closure").
578 (cp_parser_std_attribute): Use gnu_identifier instead of
579 get_identifier ("gnu").
580 (cp_parser_std_attribute_spec): Likewise. Use aligned_identifier
581 instead of get_identifier ("aligned").
582 * class.c (check_abi_tags, inherit_targ_abi_tags): Use
583 abi_tag_identifier instead of get_identifier ("abi_tag").
584
585 PR c++/85515
586 * cp-tree.h (enum cp_tree_index): Add
587 CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
588 (for_range__identifier, for_begin__identifier, for_end__identifier,
589 for_range_identifier, for_begin_identifier, for_end_identifier):
590 Define.
591 * decl.c (initialize_predefined_identifiers): Initialize
592 for_{range,begin,end}{,_}_identifier.
593 * parser.c (build_range_temp): Use for_range__identifier instead of
594 get_identifier ("__for_range").
595 (cp_convert_range_for): Use for_begin__identifier and
596 for_end__identifier instead of get_identifier ("__for_begin") and
597 get_identifier ("__for_end").
598 * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
599 local symbols to "__for_{range,begin,end}".
600
601 2018-07-23 Jakub Jelinek <jakub@redhat.com>
602
603 PR c++/86569
604 * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
605 of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
606 or warn_nonnull_compare.
607
608 2018-07-19 Paolo Carlini <paolo.carlini@oracle.com>
609
610 Revert fix for c++/59480 (and testsuite followup)
611
612 2019-07-18 Paolo Carlini <paolo.carlini@oracle.com>
613
614 PR c++/59480, DR 136
615 * decl.c (check_no_redeclaration_friend_default_args): New.
616 (duplicate_decls): Use the latter; also check that a friend
617 declaration specifying default arguments is a definition.
618
619 2018-07-18 Jakub Jelinek <jakub@redhat.com>
620
621 PR c++/86550
622 * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
623 specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
624
625 2018-07-18 Marek Polacek <polacek@redhat.com>
626
627 PR c++/86190 - bogus -Wsign-conversion warning
628 * typeck.c (cp_build_binary_op): Fix formatting. Add a warning
629 sentinel.
630
631 2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
632
633 PR c++/59480, DR 136
634 * decl.c (check_no_redeclaration_friend_default_args): New.
635 (duplicate_decls): Use the latter; also check that a friend
636 declaration specifying default arguments is a definition.
637
638 2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
639
640 * class.c (note_name_declared_in_class): Prefer permerror + inform
641 to a pair of permerrors; use DECL_SOURCE_LOCATION.
642
643 2018-07-18 Richard Biener <rguenther@suse.de>
644
645 PR debug/86523
646 * decl2.c (c_parse_final_cleanups): Call write_out_vars before
647 start_static_storage_duration_function sets current_function_decl.
648
649 2018-07-17 Jason Merrill <jason@redhat.com>
650
651 PR c++/86480 - nested variadic lambda and constexpr if.
652 * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
653 IF_STMT_EXTRA_ARGS.
654 * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
655 cp_unevaluated_operand.
656 [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
657
658 2018-07-16 Paolo Carlini <paolo.carlini@oracle.com>
659
660 * class.c (resolve_address_of_overloaded_function): Don't emit an
661 inform if the matching permerror returns false.
662 * pt.c (check_specialization_namespace): Likewise.
663
664 2018-07-16 Jakub Jelinek <jakub@redhat.com>
665
666 PR c++/3698
667 PR c++/86208
668 * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
669 in TREE_USED flag from stmt to h->to.
670
671 2018-07-13 Nathan Sidwell <nathan@acm.org>
672
673 PR c++/86374
674 * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
675 contexts that are classes.
676 * parser.c (cp_parser_template_id): Combine entering_scope decl &
677 initializer.
678
679 2018-07-12 Jakub Jelinek <jakub@redhat.com>
680
681 * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
682 type here, instead add "omp declare target implicit" attribute. Add
683 that attribute instead of "omp declare target" also when
684 processing_template_decl.
685 * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
686 and before calling cp_omp_mappable_type call complete_type.
687
688 2018-07-10 Jakub Jelinek <jakub@redhat.com>
689
690 PR sanitizer/86406
691 * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
692 DEBUG_BEGIN_STMTs.
693
694 PR c++/86443
695 * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
696 instead of setting *lastp turn orig_declv elt into a TREE_LIST.
697 (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
698 * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
699 TREE_LIST for both the original class iterator and the "last" helper
700 var.
701
702 2018-07-09 Paolo Carlini <paolo.carlini@oracle.com>
703
704 * decl.c (grokdeclarator): Use rich_location::add_range in three
705 more places; include gcc-rich-location.h.
706
707 2018-07-07 Aldy Hernandez <aldyh@redhat.com>
708
709 * decl.c (build_enumerator): Change overflow type to overflow_type.
710 * init.c (build_new_1): Same.
711
712 2018-07-05 Nathan Sidwell <nathan@acm.org>
713
714 * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
715 NO_IMPLICIT_EXTERN_C.
716 * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
717
718 2018-07-04 Ville Voutilainen <ville.voutilainen@gmail.com>
719
720 PR c++/86398
721 * method.c (is_trivially_xible): Return false
722 if is_xible_helper returns a NULL_TREE.
723
724 2018-07-03 Paolo Carlini <paolo.carlini@oracle.com>
725
726 * decl.c (min_location): New.
727 (smallest_type_quals_location): Use the latter.
728 (check_concept_fn): Use DECL_SOURCE_LOCATION.
729 (grokdeclarator): Use accurate locations in a number of error
730 messages involving ds_thread, ds_storage_class, ds_virtual,
731 ds_constexpr, ds_typedef and ds_friend; exploit min_location.
732
733 2018-07-03 Marek Polacek <polacek@redhat.com>
734
735 PR c++/86201
736 * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
737
738 2018-07-03 Jason Merrill <jason@redhat.com>
739
740 PR c++/86378 - functional cast in noexcept-specifier.
741 * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
742
743 2018-07-02 Paolo Carlini <paolo.carlini@oracle.com>
744
745 * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
746 in error message about __thread and thread_local at the same time.
747
748 2018-06-29 Marek Polacek <polacek@redhat.com>
749
750 PR c++/86184
751 * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
752
753 2018-06-28 David Malcolm <dmalcolm@redhat.com>
754
755 * parser.c (cp_parser_error_1): After issuing a conflict marker
756 error, consume tokens until the end of the source line.
757
758 2018-06-28 Jason Merrill <jason@redhat.com>
759
760 PR c++/86342 - -Wdeprecated-copy and system headers.
761 * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
762 in system headers.
763
764 2018-06-27 David Malcolm <dmalcolm@redhat.com>
765
766 PR c++/86329
767 * name-lookup.c (consider_binding_level): Filter out names that
768 match anon_aggrname_p.
769
770 2018-06-27 Jason Merrill <jason@redhat.com>
771
772 * name-lookup.c (do_pushtag): If we skip a class level, also skip
773 its template level.
774
775 2018-06-26 Jason Merrill <jason@redhat.com>
776
777 PR c++/86320 - memory-hog with std::array of pair
778 * typeck2.c (process_init_constructor_array): Only compute a
779 constant initializer once.
780
781 PR c++/80290 - memory-hog with std::pair.
782 * pt.c (fn_type_unification): Add convs parameter.
783 (check_non_deducible_conversion): Remember conversion.
784 (check_non_deducible_conversions): New. Do checks here.
785 (type_unification_real): Not here. Remove flags parm.
786 * call.c (add_function_candidate): Make convs a parameter.
787 Don't recalculate the conversion if it's already set.
788 (add_template_candidate_real): Allocate convs here.
789 (good_conversion, conv_flags): New.
790
791 2018-06-26 Jakub Jelinek <jakub@redhat.com>
792
793 PR c++/86291
794 * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
795 type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
796
797 2018-06-23 Paolo Carlini <paolo.carlini@oracle.com>
798
799 * decl.c (bad_specifiers): Add const location_t* parameter and
800 use locations in error messages about 'inline' and 'virtual'.
801 (mark_inline_variable): Add location_t parameter and use it in
802 error_at and pedwarn messages.
803 (grokdeclarator): Use declspecs->locations[ds_constexpr],
804 declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
805 declspecs->locations[ds_inline] in many error messages; adjust
806 bad_specifiers and mark_inline_variable calls.
807 (grokvardecl): Use declspecs->locations[ds_concept] in error message.
808
809 2018-06-22 Jason Merrill <jason@redhat.com>
810
811 PR c++/86219 - ICE with erroneous initializer in template.
812 * constexpr.c (fold_non_dependent_expr): Add complain parm.
813 * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
814 Pass it.
815 * call.c (build_cxx_call): Don't mess with builtins in a template.
816 * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
817 produce a constant value, go back to the uninstantiated form.
818
819 Avoid taking the address of something just because it's in parens.
820 * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
821 (cxx_fold_indirect_ref): Use it.
822 (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
823 * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
824 * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
825 static_cast to reference type.
826 (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
827
828 2018-06-21 Jason Merrill <jason@redhat.com>
829
830 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
831
832 * name-lookup.c (do_push_to_top_level): Don't allocate
833 current_lang_base.
834 (do_pop_from_top_level): Release current_lang_base.
835
836 Let -fmem-report see callers of cxx_make_type.
837 * lex.c (cxx_make_type): Add MEM_STAT_DECL.
838 (make_class_type): Likewise.
839 (cxx_make_type_hook): New.
840 * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
841
842 2018-06-20 Nathan Sidwell <nathan@acm.org>
843
844 PR c++/85634
845 * friend.c (add_friend): Keep lookup sets of tempate sets.
846
847 2018-06-20 Paolo Carlini <paolo.carlini@oracle.com>
848
849 * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
850 tidy handling of a null location_t argument; use proper location
851 information in a few additional error messages.
852 (grokdeclarator): Update calls.
853
854 2018-06-20 Chung-Lin Tang <cltang@codesourcery.com>
855 Thomas Schwinge <thomas@codesourcery.com>
856 Cesar Philippidis <cesar@codesourcery.com>
857
858 * parser.c (cp_parser_omp_clause_name): Add support for finalize
859 and if_present. Make present_or_{copy,copyin,copyout,create} aliases
860 to their non-present_or_* counterparts. Make 'self' an alias to
861 PRAGMA_OACC_CLAUSE_HOST.
862 (cp_parser_oacc_data_clause): Update GOMP mappings for
863 PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
864 PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
865 (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
866 Remove support for present_or_* clauses.
867 (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
868 (OACC_PARALLEL_CLAUSE_MASK): Likewise.
869 (OACC_DECLARE_CLAUSE_MASK): Likewise.
870 (OACC_DATA_CLAUSE_MASK): Likewise.
871 (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
872 (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
873 (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
874 (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
875 * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
876 * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
877
878 2018-06-20 Marek Polacek <polacek@redhat.com>
879
880 PR c++/86240
881 * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
882 (fold_simple_1): Likewise.
883 * error.c (dump_expr): Likewise.
884
885 2018-06-20 Nathan Sidwell <nathan@acm.org>
886
887 PR c++/85634
888 * cp-tree.h (lookup_keep): Drop KEEP parm.
889 (lookup_list_keep): Delete.
890 (maybe_get_fns): Declare.
891 * parser.c (cp_parser_primary_expression): Call lookup_keep here.
892 (cp_parser_template_id): Not here ...
893 * decl.c (cp_finish_decl): ... nor here ...
894 * init.c (build_raw_new_expr): ... nor here ...
895 * pt.c (process_template_parm): ... nor here ...
896 * semantics.c (perform_koenig_lookup): Call lookup_keep.
897 (finish_call_expr): Not here.
898 * tree.c (ovl_cache): Delete.
899 (ovl_make, ovl_copy): No cache.
900 (lookup_keep): Always keep.
901 (lookup_list_keep): Delete.
902 (maybe_get_fns): New, broken out of ...
903 (get_fns): ... here. Call it.
904 (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
905 (build_min_nt_call_vec): Likewise.
906
907 2018-06-19 Jason Merrill <jason@redhat.com>
908
909 * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
910 * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
911
912 PR c++/86182 - ICE with anonymous union passed to template.
913 * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
914 used to declare a named variable.
915
916 2018-06-18 Jason Merrill <jason@redhat.com>
917
918 * tree.c (cp_expr_location): New.
919 * cp-tree.h (cp_expr_loc_or_loc): New.
920 * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
921 error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
922 typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
923
924 * parser.c (cp_parser_lambda_expression): Use a range for
925 LAMBDA_EXPR_LOCATION.
926
927 PR c++/86200 - ICE with unexpanded pack in lambda parameter.
928 * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
929 function type.
930
931 PR c++/81060 - ICE with unexpanded parameter pack.
932 * pt.c (check_for_bare_parameter_packs): Add loc parameter.
933 * decl.c (grokdeclarator): Call it for qualifying_scope.
934
935 PR c++/86171 - ICE with recursive alias instantiation.
936 * pt.c (tsubst_decl): Handle recursive alias instantiation.
937
938 2018-06-18 Paolo Carlini <paolo.carlini@oracle.com>
939
940 * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
941 in errors about redefined default arguments; tidy.
942
943 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
944
945 * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
946 * cp-gimplify.c (cp_fold): Likewise.
947
948 2018-06-15 Jason Merrill <jason@redhat.com>
949
950 PR c++/86147 - wrong capture for template argument.
951 * expr.c (mark_use): Look through NOP_EXPR.
952
953 * name-lookup.c (do_pushtag): Don't look through complete types, but
954 don't add to them either. Get context from current_binding_level.
955 * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
956
957 * decl.c (start_enum): Do compare dependent underlying type.
958
959 PR c++/82882 - ICE with lambda in template default argument.
960 * lambda.c (record_null_lambda_scope): New.
961 * pt.c (tsubst_lambda_expr): Use it.
962 * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
963 function that isn't open.
964
965 * tree.c (maybe_warn_parm_abi): Inform the location of the class.
966
967 2018-06-14 Marek Polacek <polacek@redhat.com>
968
969 PR c++/86063
970 * decl2.c (cp_check_const_attributes): Skip trees that are not
971 TREE_LISTs.
972
973 2018-06-14 Jakub Jelinek <jakub@redhat.com>
974
975 P0624R2 - Default constructible and assignable stateless lambdas
976 * method.c (synthesized_method_walk): For C++2a don't mark
977 sfk_constructor or sfk_copy_assignment as deleted if lambda has
978 no lambda-captures.
979
980 2018-06-14 Paolo Carlini <paolo.carlini@oracle.com>
981
982 * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
983 OPT_Wshadow warning_at.
984 (grokfndecl): Consistently use the location_t argument in
985 literal operator diagnostic messages.
986 (grokdeclarator): Use declspecs->locations[ds_storage_class]
987 in error_at call.
988 * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
989 in permerror call.
990
991 2018-06-13 Jason Merrill <jason@redhat.com>
992
993 PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
994 * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
995 constructors.
996
997 PR c++/86094 - wrong code with defaulted move ctor.
998 * class.c (classtype_has_non_deleted_move_ctor): New.
999 * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
1000 Handle v12 breakage.
1001
1002 2018-06-12 Jason Merrill <jason@redhat.com>
1003
1004 PR c++/86098 - ICE with template placeholder for TTP.
1005 * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
1006 CLASS_PLACEHOLDER_TEMPLATE.
1007
1008 2018-06-12 Paolo Carlini <paolo.carlini@oracle.com>
1009
1010 * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
1011 parameter and adjust error_at calls.
1012 * decl.c (grok_op_properties): Adjust calls.
1013 * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
1014
1015 2018-06-12 Marek Polacek <polacek@redhat.com>
1016
1017 Core issue 1331 - const mismatch with defaulted copy constructor
1018 * class.c (check_bases_and_members): When checking a defaulted
1019 function, mark it as deleted rather than giving an error.
1020
1021 2018-06-11 Jason Merrill <jason@redhat.com>
1022
1023 PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
1024 * class.c (maybe_warn_about_overly_private_class): Handle inherited
1025 constructors.
1026
1027 PR c++/85963 - -Wunused-but-set with ?: in template.
1028 * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
1029
1030 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com>
1031
1032 * decl.c (grok_op_properties): Consistently use the location
1033 of the decl; remove special casing of POSTINCREMENT_EXPR and
1034 POSTDECREMENT_EXPR wrt default arguments.
1035
1036 2018-06-05 Jason Merrill <jason@redhat.com>
1037
1038 * constexpr.c (cxx_eval_binary_expression): Special case comparison
1039 of pointers to members of the same union.
1040
1041 2018-06-11 Jason Merrill <jason@redhat.com>
1042
1043 PR c++/86094 - wrong code with defaulted move ctor.
1044 * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
1045
1046 2018-06-10 Paolo Carlini <paolo.carlini@oracle.com>
1047
1048 * decl.c (grokfndecl): Use the location_t argument in two more places.
1049
1050 2018-06-06 Marek Polacek <polacek@redhat.com>
1051
1052 PR c++/85977
1053 * pt.c (unify): If ELTTYPE has no deducible template parms, skip
1054 deduction from the list elements.
1055 (type_unification_real): Check convertibility of list elements.
1056
1057 2018-06-06 Jason Merrill <jason@redhat.com>
1058
1059 PR c++/86060 - ICE on range for with -std=c++98.
1060 * parser.c (cp_parser_init_statement): Don't clobber *decl after
1061 pedwarn.
1062
1063 PR c++/85710 - ICE with -Wmemset-elt-size.
1064 * semantics.c (finish_call_expr): Call warn_for_memset here.
1065 * parser.c (cp_parser_postfix_expression): Not here.
1066 (literal_integer_zerop): No longer static.
1067 * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
1068
1069 2018-06-05 Marek Polacek <polacek@redhat.com>
1070
1071 PR c++/85976
1072 * tree.c (cp_tree_equal): Handle USING_DECL.
1073
1074 2018-06-05 Jason Merrill <jason@redhat.com>
1075
1076 PR c++/85731 - wrong error with qualified-id in template.
1077 * semantics.c (finish_qualified_id_expr): build_qualified_name
1078 for unbound names in the current class.
1079
1080 2018-06-04 Jason Merrill <jason@redhat.com>
1081
1082 PR c++/61806 - missed SFINAE with partial specialization.
1083 * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
1084 parameter to constructor.
1085 * pt.c (instantiate_class_template_1): Enable access checking
1086 before call to most_specialized_partial_spec.
1087
1088 PR c++/85765 - SFINAE and non-type default template arg.
1089 * pt.c (type_unification_real): Do full semantic processing if
1090 substituting a partial args list replaces all template parms.
1091
1092 2018-06-03 Jason Merrill <jason@redhat.com>
1093
1094 PR c++/85739 - ICE with pointer to member template parm.
1095 * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
1096
1097 2018-06-02 Jason Merrill <jason@redhat.com>
1098
1099 PR c++/85761 - ICE with ill-formed use of const outer variable.
1100 * expr.c (mark_use): Handle location wrappers.
1101
1102 2018-06-01 Jason Merrill <jason@redhat.com>
1103
1104 PR c++/85764 - bogus 'this' not captured error.
1105 * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
1106 (nonlambda_method_basetype): Handle NSDMI.
1107
1108 CWG 1581: When are constexpr member functions defined?
1109 * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
1110 (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
1111
1112 PR c++/58281 - explicit instantiation of constexpr
1113 * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
1114
1115 * pt.c (instantiate_decl): Any defaulted function is defined.
1116
1117 2018-05-30 Jonathan Wakely <jwakely@redhat.com>
1118
1119 PR c++/77777
1120 * call.c (resolve_args): Use location of expression, not current input
1121 location.
1122
1123 2018-05-30 Ville Voutilainen <ville.voutilainen@gmail.com>
1124
1125 Do not warn about zero-as-null when NULL is used.
1126 * call.c (conversion_null_warnings): Check for pointer
1127 types converted from zero constants.
1128 (convert_like_real): Add a warning sentinel at the end.
1129 * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
1130 check null_node_p.
1131
1132 2018-05-30 Jason Merrill <jason@redhat.com>
1133
1134 PR c++/85807 - ICE with call in template NSDMI.
1135 * init.c (get_nsdmi): Use push_to/pop_from_top_level.
1136 * tree.c (bot_manip): Don't set_flags_from_callee in a template.
1137
1138 PR c++/85873 - constant initializer_list array not in .rodata.
1139 * tree.c (build_target_expr): Set TREE_READONLY.
1140 * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
1141
1142 * parser.c (cp_parser_check_condition_declarator): Handle
1143 cp_error_declarator.
1144
1145 2018-05-30 Jonathan Wakely <jwakely@redhat.com>
1146
1147 * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
1148 of using it in dead store.
1149
1150 2018-05-29 Jason Merrill <jason@redhat.com>
1151
1152 PR c++/67445 - returning temporary initializer_list.
1153 PR c++/67711 - assigning from temporary initializer_list.
1154 PR c++/48562 - new initializer_list.
1155 * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
1156 about returning local initializer_list.
1157 * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
1158 * call.c (build_over_call): Warn about assignment from temporary
1159 init_list.
1160 * init.c (build_new_1): Warn about 'new std::initializer_list'.
1161 (find_list_begin, maybe_warn_list_ctor): New.
1162 (perform_member_init): Use maybe_warn_list_ctor.
1163
1164 2018-05-29 Marek Polacek <polacek@redhat.com>
1165
1166 PR c++/85883
1167 * init.c (build_new): Handle deducing a class with new
1168 with more than one argument.
1169
1170 2018-05-29 Jakub Jelinek <jakub@redhat.com>
1171
1172 PR c++/85952
1173 * init.c (build_aggr_init): For structured binding initialized from
1174 array call mark_rvalue_use on the initializer.
1175
1176 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
1177
1178 * decl2.c (start_static_storage_duration_function): Use
1179 splay_tree_delete_pointers.
1180
1181 2018-05-25 Jason Merrill <jason@redhat.com>
1182
1183 PR c++/85815 - reference to member of enclosing template.
1184 * search.c (lookup_base): Use currently_open_class.
1185 (lookup_member): Use it regardless of -fconcepts.
1186 * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
1187
1188 CWG 616, 1213 - value category of subobject references.
1189 * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
1190
1191 2018-05-24 Jason Merrill <jason@redhat.com>
1192
1193 PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
1194 * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
1195 generic lambda.
1196
1197 2018-05-24 Ville Voutilainen <ville.voutilainen@gmail.com>
1198
1199 Pedwarn on a non-standard position of a C++ attribute.
1200 * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
1201 after the namespace name.
1202
1203 2018-05-24 Paolo Carlini <paolo.carlini@oracle.com>
1204
1205 * cp-tree.h (INDIRECT_TYPE_P): New.
1206 * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
1207 joust): Use it instead of POINTER_TYPE_P.
1208 * class.c (update_vtable_entry_for_fn, find_flexarrays,
1209 * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
1210 * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
1211 * cxx_eval_increment_expression, potential_constant_expression_1):
1212 Likewise.
1213 * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
1214 * cp-objcp-common.c (cxx_get_alias_set): Likewise.
1215 * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
1216 cp_ubsan_maybe_instrument_downcast): Likewise.
1217 * cvt.c (cp_convert_to_pointer, ocp_convert,
1218 cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
1219 * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
1220 pp_cxx_offsetof_expression_1): Likewise.
1221 * decl.c (grokparms, static_fn_type): Likewise.
1222 * decl2.c (grokbitfield): Likewise.
1223 * error.c (dump_expr): Likewise.
1224 * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
1225 * init.c (warn_placement_new_too_small): Likewise.
1226 * lambda.c (build_capture_proxy, add_capture): Likewise.
1227 * parser.c (cp_parser_omp_for_loop): Likewise.
1228 * pt.c (convert_nontype_argument, fn_type_unification,
1229 uses_deducible_template_parms, check_cv_quals_for_unify,
1230 dependent_type_p_r): Likewise.
1231 * search.c (check_final_overrider): Likewise.
1232 * semantics.c (handle_omp_array_sections, finish_omp_clauses,
1233 finish_omp_for): Likewise.
1234 * tree.c (cp_build_qualified_type_real): Likewise.
1235 * typeck.c (build_class_member_access_expr,
1236 finish_class_member_access_expr, build_x_indirect_ref,
1237 cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
1238 Likewise.
1239
1240 2018-05-24 Jason Merrill <jason@redhat.com>
1241
1242 PR c++/85864 - literal template and default template arg.
1243 * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
1244
1245 2018-05-24 Marek Polacek <polacek@redhat.com>
1246
1247 PR c++/85847
1248 * init.c (build_new_1): Use fold_non_dependent_expr. Use a dedicated
1249 variable for its result. Fix a condition.
1250 (build_new): Use fold_non_dependent_expr. Tweak a condition.
1251
1252 2018-05-23 Jason Merrill <jason@redhat.com>
1253
1254 Fix cast to rvalue reference from prvalue.
1255 * cvt.c (diagnose_ref_binding): Handle rvalue reference.
1256 * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
1257 non-class type. Handle xvalue argument.
1258 * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
1259 rvalue reference.
1260 * semantics.c (finish_compound_literal): Do direct-initialization,
1261 not cast, to initialize a reference.
1262
1263 CWG 616, 1213 - value category of subobject references.
1264 * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
1265 an xvalue.
1266 * typeck2.c (build_m_component_ref): Likewise.
1267 * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
1268 distinction between temporary and xvalue.
1269
1270 2018-05-23 Marek Polacek <polacek@redhat.com>
1271
1272 Implement P0614R1, Range-based for statements with initializer.
1273 * parser.c (cp_parser_range_based_for_with_init_p): New.
1274 (cp_parser_init_statement): Use it. Parse the optional init-statement
1275 for a range-based for loop.
1276 (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
1277
1278 2018-05-22 Jason Merrill <jason@redhat.com>
1279
1280 PR c++/81420 - not extending temporary lifetime.
1281 * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
1282 * class.c (build_base_path): Avoid redundant move of an rvalue.
1283
1284 PR c++/85866 - error with .* in default template arg.
1285 * pt.c (tsubst_copy_and_build): Handle partial instantiation.
1286
1287 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
1288
1289 * parser.c (cp_parser_parameter_declaration_list): Remove
1290 bool* parameter.
1291 (cp_parser_parameter_declaration_clause): Adjust.
1292 (cp_parser_cache_defarg): Likewise.
1293
1294 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
1295
1296 PR c++/84588
1297 * parser.c (cp_parser_maybe_commit_to_declaration,
1298 cp_parser_check_condition_declarator): New.
1299 (cp_parser_simple_declaration): Use the first above.
1300 (cp_parser_condition): Use both the above; enforce
1301 [stmt.stmt]/2 about the declarator not specifying
1302 a function or an array; improve error-recovery.
1303
1304 2018-05-20 Jason Merrill <jason@redhat.com>
1305
1306 PR libstdc++/85843 - warning in logic_error copy constructor.
1307 * class.c (type_has_user_nondefault_constructor): Check for a
1308 user-provided ctor, not user-declared.
1309
1310 2018-05-19 Jason Merrill <jason@redhat.com>
1311
1312 * pt.c (tsubst_pack_expansion): Sorry rather than abort
1313 on __integer_pack as subexpression of pattern.
1314
1315 2018-05-18 Jason Merrill <jason@redhat.com>
1316
1317 PR c++/58407 - deprecated implicit copy ops.
1318 * call.c (build_over_call): Warn about deprecated trivial fns.
1319 * class.c (classtype_has_user_copy_or_dtor): New.
1320 (type_build_ctor_call): Check TREE_DEPRECATED.
1321 (type_build_dtor_call): Likewise.
1322 * decl2.c (cp_warn_deprecated_use): Move from tree.c.
1323 Add checks. Return bool. Handle -Wdeprecated-copy.
1324 (mark_used): Use it.
1325 * decl.c (grokdeclarator): Remove redundant checks.
1326 * typeck2.c (build_functional_cast): Likewise.
1327 * method.c (lazily_declare_fn): Mark deprecated copy ops.
1328 * init.c (build_aggr_init): Only set TREE_USED if there are
1329 side-effects.
1330
1331 2018-05-18 Cesar Philippidis <cesar@codesourcery.com>
1332
1333 PR c++/85782
1334 * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
1335 OACC_LOOPs.
1336
1337 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
1338
1339 * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
1340 (potential_constant_expression_1): Likewise.
1341
1342 2018-05-16 Marek Polacek <polacek@redhat.com>
1343
1344 PR c++/85363
1345 * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
1346 * tree.c (bot_manip): Call set_flags_from_callee for
1347 AGGR_INIT_EXPRs too.
1348
1349 2018-05-15 Jason Merrill <jason@redhat.com>
1350
1351 * cp-tree.h (cp_expr): Remove copy constructor.
1352 * mangle.c (struct releasing_vec): Declare copy constructor.
1353
1354 * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
1355
1356 PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
1357 * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
1358 is a throw-expression.
1359
1360 2018-05-15 Paolo Carlini <paolo.carlini@oracle.com>
1361
1362 * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
1363 (FOR_EACH_CLONE): Update.
1364 * decl.c (grokdeclarator): Use it.
1365 * decl2.c (vague_linkage_p): Likewise.
1366 * mangle.c (mangle_decl): Likewise.
1367 * method.c (lazily_declare_fn): Likewise.
1368 * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
1369 * repo.c (repo_emit_p): Likewise.
1370 * tree.c (decl_linkage): Likewise.
1371
1372 2018-05-14 Jason Merrill <jason@redhat.com>
1373
1374 Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
1375 * tree.c (build_cp_fntype_variant): New.
1376 (build_ref_qualified_type, build_exception_variant)
1377 (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
1378 (cxx_type_hash_eq, cp_check_qualified_type): Check
1379 TYPE_HAS_LATE_RETURN_TYPE.
1380 (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
1381 (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
1382 * class.c (build_clone): Use cxx_copy_lang_qualifiers.
1383 (adjust_clone_args): Likewise.
1384 * decl.c (grokfndecl): Add late_return_type_p parameter. Use
1385 build_cp_fntype_variant.
1386 (grokdeclarator): Pass late_return_type_p to grokfndecl.
1387 (check_function_type): Use cxx_copy_lang_qualifiers.
1388 (static_fn_type): Use cxx_copy_lang_qualifiers.
1389 * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
1390 (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
1391 (change_return_type): Use cxx_copy_lang_qualifiers.
1392 * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
1393 * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
1394 return type on the declarator like a normal trailing return type.
1395 * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
1396 (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
1397 * typeck.c (merge_types): Use build_cp_fntype_variant.
1398
1399 2018-05-14 Paolo Carlini <paolo.carlini@oracle.com>
1400
1401 * cp-tree.h (TYPE_REF_P): New.
1402 (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
1403 * call.c (build_list_conv, build_aggr_conv, standard_conversion,
1404 direct_reference_binding, reference_binding, implicit_conversion,
1405 add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
1406 build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
1407 build_over_call, perform_implicit_conversion_flags,
1408 extend_ref_init_temps, type_has_extended_temps): Use it.
1409 * class.c (one_inheriting_sig, check_field_decls,
1410 check_bases_and_members, find_flexarrays, finish_struct,
1411 fixed_type_or_null): Likewise.
1412 * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
1413 non_const_var_error, cxx_eval_constant_expression,
1414 potential_constant_expression_1): Likewise.
1415 * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
1416 cp_genericize_r, cxx_omp_privatize_by_reference,
1417 cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
1418 cp_fold_maybe_rvalue): Likewise.
1419 * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
1420 * cvt.c (build_up_reference, convert_to_reference,
1421 convert_from_reference, convert_to_void, noexcept_conv_p,
1422 fnptr_conv_p): Likewise.
1423 * decl.c (poplevel, check_for_uninitialized_const_var,
1424 check_initializer, initialize_local_var, cp_finish_decl,
1425 get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
1426 move_signature_fn_p, grok_op_properties, finish_function): Likewise.
1427 * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
1428 decl_maybe_constant_var_p): Likewise.
1429 * error.c (dump_type_prefix, dump_expr): Likewise.
1430 * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
1431 is_admissible_throw_operand_or_catch_parameter): Likewise.
1432 * expr.c (mark_use): Likewise.
1433 * init.c (build_zero_init_1, build_value_init_noctor,
1434 perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
1435 build_new, build_delete): Likewise.
1436 * lambda.c (build_lambda_object): Likewise.
1437 * mangle.c (write_expression, write_template_arg): Likewise.
1438 * method.c (forward_parm, do_build_copy_constructor,
1439 do_build_copy_assign, build_stub_object, constructible_expr,
1440 walk_field_subobs): Likewise.
1441 * parser.c (cp_parser_omp_for_loop_init,
1442 cp_parser_omp_declare_reduction_exprs,
1443 cp_parser_omp_declare_reduction): Likewise.
1444 * pt.c (convert_nontype_argument_function, convert_nontype_argument,
1445 convert_template_argument, tsubst_pack_expansion,
1446 tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
1447 maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
1448 more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
1449 value_dependent_expression_p, build_deduction_guide): Likewise.
1450 * semantics.c (finish_handler_parms, finish_non_static_data_member,
1451 finish_compound_literal, omp_privatize_field,
1452 handle_omp_array_sections_1, handle_omp_array_sections,
1453 cp_check_omp_declare_reduction, finish_omp_reduction_clause,
1454 finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
1455 finish_omp_clauses, finish_decltype_type, capture_decltype,
1456 finish_builtin_launder): Likewise.
1457 * tree.c (lvalue_kind, cp_build_reference_type, move,
1458 cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
1459 * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
1460 cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
1461 cp_build_addr_expr_1, maybe_warn_about_useless_cast,
1462 build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
1463 build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
1464 convert_for_initialization,
1465 maybe_warn_about_returning_address_of_local, check_return_expr,
1466 cp_type_quals, casts_away_constness, non_reference): Likewise.
1467 * typeck2.c (cxx_readonly_error, store_init_value,
1468 process_init_constructor_record, build_x_arrow, build_functional_cast,
1469 add_exception_specifier): Likewise.
1470
1471 2018-05-14 Jason Merrill <jason@redhat.com>
1472
1473 * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
1474 (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
1475
1476 2018-05-11 Jakub Jelinek <jakub@redhat.com>
1477
1478 PR c/85696
1479 * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
1480 * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
1481 cxx_omp_predetermined_sharing_1. Rename old function to ...
1482 (cxx_omp_predetermined_sharing_1): ... this.
1483 * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
1484 instead of cxx_omp_predetermined_sharing.
1485
1486 2018-05-10 Jason Merrill <jason@redhat.com>
1487
1488 * decl.c (cp_finish_decl): Don't instantiate auto variable.
1489 (check_static_variable_definition): Allow auto.
1490 * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
1491
1492 * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
1493 (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
1494
1495 Core issue 2310 - conversion to base of incomplete type.
1496 * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
1497
1498 CWG 2267 - list-initialization of reference temporary
1499 * call.c (reference_binding): List-initializing a reference
1500 temporary is copy-list-initialization.
1501
1502 * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
1503
1504 * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
1505 instantiation in template context.
1506
1507 * class.c (vbase_has_user_provided_move_assign): Use
1508 user_provided_p.
1509
1510 * lambda.c (lambda_expr_this_capture): Improve logic.
1511
1512 * decl.c (make_typename_type): s/parameters/arguments/.
1513 * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
1514 * pt.c (make_pack_expansion): Correct error message.
1515
1516 2018-05-10 Jakub Jelinek <jakub@redhat.com>
1517
1518 PR c++/85662
1519 * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
1520 fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
1521 fold_convert.
1522
1523 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
1524
1525 PR c++/85400
1526 * decl2.c (adjust_var_decl_tls_model): New static function.
1527 (comdat_linkage): Call it on a variable.
1528 (maybe_make_one_only): Likewise.
1529
1530 2018-05-09 Paolo Carlini <paolo.carlini@oracle.com>
1531
1532 PR c++/85713
1533 Revert:
1534 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
1535
1536 PR c++/84588
1537 * parser.c (cp_parser_parameter_declaration_list): When the
1538 entire parameter-declaration-list is erroneous maybe call
1539 abort_fully_implicit_template.
1540
1541 2018-05-08 Jason Merrill <jason@redhat.com>
1542
1543 PR c++/85706 - class deduction under decltype
1544 * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE. Clear
1545 *walk_subtrees whether or not we walked into the operand.
1546 (type_uses_auto): Only look at deduced contexts.
1547
1548 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
1549
1550 PR c++/84588
1551 * parser.c (cp_parser_parameter_declaration_list): When the
1552 entire parameter-declaration-list is erroneous maybe call
1553 abort_fully_implicit_template.
1554
1555 2018-05-08 Marek Polacek <polacek@redhat.com>
1556
1557 PR c++/85695
1558 * semantics.c (finish_if_stmt_cond): See through typedefs.
1559
1560 2018-05-07 Jason Merrill <jason@redhat.com>
1561
1562 PR c++/85646 - lambda visibility.
1563 * decl2.c (determine_visibility): Don't mess with template arguments
1564 from the containing scope.
1565 (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
1566 thunk.
1567
1568 2018-05-07 Nathan Sidwell <nathan@acm.org>
1569
1570 Remove fno-for-scope
1571 * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
1572 (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
1573 (SET_DECL_SHADOWED_FOR_VAR): Delete.
1574 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1575 (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
1576 Don't declare.
1577 * name-lookup.h (struct cp_binding_level): Remove
1578 dead_vars_from_for field.
1579 * cp-lang.c (cp_init_ts): Delete.
1580 (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
1581 * cp-objcp-common.c (shadowed_var_for_decl): Delete.
1582 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
1583 (init_shadowed_var_for_decl): Delete.
1584 * decl.c (poplevel): Remove shadowed for var handling.
1585 (cxx_init_decl_processing): Remove -ffor-scope deprecation.
1586 * name-lookup.c (find_local_binding): Remove shadowed for var
1587 handling.
1588 (check_local_shadow): Likewise.
1589 (check_for_out_of_scope_variable): Delete.
1590 * parser.c (cp_parser_primary_expression): Remove shadowed for var
1591 handling.
1592 * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
1593 * semantics.c (begin_for_scope): Always have a scope.
1594 (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
1595 (begin_range_for_stmt, finish_id_expression): Likewise.
1596
1597 2018-05-07 Jason Merrill <jason@redhat.com>
1598
1599 PR c++/85618 - ICE with initialized VLA.
1600 * tree.c (vla_type_p): New.
1601 * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
1602 rather than array_of_runtime_bound_p.
1603
1604 2018-05-05 Paolo Carlini <paolo.carlini@oracle.com>
1605
1606 * cvt.c (ocp_convert): Early handle the special case of a
1607 null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
1608
1609 2018-05-03 Jason Merrill <jason@redhat.com>
1610
1611 PR c++/85600 - virtual delete failure.
1612 * init.c (build_delete): Always save_expr when deleting.
1613
1614 2018-05-03 Nathan Sidwell <nathan@acm.org>
1615
1616 * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
1617 * name-lookup.c (do_pushdecl): Likewise.
1618
1619 2018-05-02 Paolo Carlini <paolo.carlini@oracle.com>
1620 Jason Merrill <jason@redhat.com>
1621
1622 PR c++/68374
1623 * name-lookup.c (check_local_shadow): Don't handle static old
1624 declarations in the block handling locals shadowing locals.
1625
1626 2018-05-01 Jason Merrill <jason@redhat.com>
1627
1628 PR c++/85587 - error with scoped enum in template.
1629 * semantics.c (finish_qualified_id_expr): Don't return an
1630 unqualified IDENTIFIER_NODE.
1631
1632 2018-04-30 Jason Merrill <jason@redhat.com>
1633
1634 PR c++/85580 - extern "C" and local variables
1635 * name-lookup.c (check_extern_c_conflict): Ignore local decls.
1636
1637 PR c++/84701 - unsigned typeof.
1638 * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
1639 of long/short/signed/unsigned.
1640
1641 PR c++/85305 - pack in lambda init-capture.
1642 * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
1643 check_for_bare_parameter_packs in a subexpression.
1644 (cp_parser_lambda_introducer): Use it.
1645
1646 PR c++/61982 - dead stores to destroyed objects.
1647 * call.c (build_trivial_dtor_call): New, assigns a clobber.
1648 (build_over_call, build_special_member_call): Use it.
1649 * cp-tree.h: Declare it.
1650 * init.c (build_delete): Remove trivial path.
1651
1652 * init.c (build_dtor_call): Use build_special_member_call.
1653 (build_delete): Remove redundant uses of save_addr.
1654
1655 * decl.c (build_clobber_this): Use build_clobber.
1656
1657 2018-04-27 Jakub Jelinek <jakub@redhat.com>
1658
1659 PR c++/85553
1660 * init.c (build_zero_init_1): For zero initialization of
1661 NULLPTR_TYPE_P type use build_int_cst directly.
1662
1663 2018-04-27 David Malcolm <dmalcolm@redhat.com>
1664
1665 PR c++/85515
1666 * name-lookup.c (consider_binding_level): Skip compiler-generated
1667 variables.
1668 * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
1669 nested if statements into a series of rejection tests. Reject
1670 lambda-ignored entities as suggestions.
1671
1672 2018-04-27 Jason Merrill <jason@redhat.com>
1673
1674 * cvt.c (cp_fold_convert): Use convert_ptrmem.
1675 * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
1676
1677 2018-04-27 Paolo Carlini <paolo.carlini@oracle.com>
1678
1679 PR c++/84691
1680 * decl.c (grokdeclarator): Clear friendp upon definition in local
1681 class definition error.
1682
1683 2018-04-27 Jason Merrill <jason@redhat.com>
1684
1685 PR c++/85545 - ICE with noexcept PMF conversion.
1686 * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
1687 build_ptrmemfunc.
1688 * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
1689 adjustment.
1690 (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
1691
1692 2018-04-27 Nathan Sidwell <nathan@acm.org>
1693
1694 * typeck.c (convert_ptrmem): Move local var decls to initialization.
1695
1696 * cp-tree.h (TEMPLATE_INFO): Fix comments.
1697 (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
1698 (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
1699 (dump, print_other_binding_stacks): Remove declarations.
1700 * name-lookup.c (print_other_binding_stack): Make static.
1701 * pt.c (build_template_decl): Make static.
1702
1703 2018-04-26 Jason Merrill <jason@redhat.com>
1704
1705 PR c++/85545 - ICE with noexcept PMF conversion.
1706 * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
1707
1708 2018-04-25 Nathan Sidwell <nathan@acm.org>
1709
1710 PR c++/85437
1711 PR c++/49171
1712 * cp-tree.h (REINTERPRET_CAST_P): New.
1713 * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
1714 Reject REINTERPET_CAST_P conversions. Use cplus_expand_constant
1715 for non-trivial PTRMEM_CST cases.
1716 * typeck.c (build_nop_reinterpret): New.
1717 (build_reinterpret_cast_1): Use it. Set REINTERPRET_CAST_P on
1718 NOP_EXPRs returned by cp_convert.
1719
1720 2018-04-23 Jason Merrill <jason@redhat.com>
1721
1722 PR c++/69560 - wrong alignof(double) on x86.
1723 CWG 1879 - Inadequate definition of alignment requirement.
1724 * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
1725 * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
1726 (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
1727 (cxx_alignof_expr): Pass it.
1728 * parser.c (cp_parser_unary_expression): Pass it.
1729 * pt.c (tsubst_copy): Copy it.
1730 (tsubst_copy_and_build): Pass it.
1731 * decl.c (fold_sizeof_expr): Pass it.
1732
1733 2018-04-23 Jakub Jelinek <jakub@redhat.com>
1734 Jason Merrill <jason@redhat.com>
1735
1736 PR c++/85470 - wrong error with static data member.
1737 * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
1738 * typeck2.c (store_init_value): Likewise.
1739
1740 2018-04-20 Jakub Jelinek <jakub@redhat.com>
1741
1742 PR c++/85462
1743 * cp-tree.h (tinst_level): Remove in_system_header_p member,
1744 change refcount member from unsigned char to unsigned short,
1745 add refcount_infinity static data member, adjust comments.
1746 * pt.c (tinst_level::refcount_infinity): Define.
1747 (inc_refcount_use): Remove assert, don't increment if refcount
1748 is already refcount_infinity, adjust comment.
1749 (dec_refcount_use): Remove assert, don't decrement if refcount
1750 is refcount_infinity, adjust comment.
1751 (push_tinst_level_loc): Formatting fix.
1752
1753 2018-04-19 Paolo Carlini <paolo.carlini@oracle.com>
1754
1755 PR c++/84611
1756 * pt.c (lookup_template_class_1): Check pushtag return value for
1757 error_mark_node.
1758
1759 2018-04-19 Alexandre Oliva <aoliva@redhat.com>
1760
1761 PR c++/80290
1762 * cp-tree.h (tinst_level::free): Fix whitespace.
1763
1764 2018-04-18 Paolo Carlini <paolo.carlini@oracle.com>
1765
1766 PR c++/84630
1767 * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
1768 for error_mark_node.
1769
1770 2018-04-18 Jakub Jelinek <jakub@redhat.com>
1771
1772 PR c++/84463
1773 * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
1774 tricks from here to ...
1775 * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here. Only use it
1776 if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
1777
1778 2018-04-18 Alexandre Oliva <aoliva@redhat.com>
1779
1780 PR c++/80290
1781 * cp-tree.h (struct tinst_level): Split decl into tldcl and
1782 targs. Add private split_list_p, tree_list_p, and not_list_p
1783 inline const predicates; to_list private member function
1784 declaration; free public member function declaration; list_p,
1785 get_node and maybe_get_node accessors, and refcount data
1786 member. Narrow errors to unsigned short.
1787 * error.c (print_instantiation_full_context): Use new
1788 accessors.
1789 (print_instantiation_partial_context_line): Likewise. Drop
1790 const from tinst_level-typed parameter.
1791 * mangle.c (mangle_decl_string): Likewise.
1792 * pt.c (freelist): New template class.
1793 (tree_list_freelist_head): New var.
1794 (tree_list_freelist): New fn, along with specializations.
1795 (tinst_level_freelist_head): New var.
1796 (pending_template_freelist_head): Likewise.
1797 (tinst_level_freelist, pending_template_freelist): New fns.
1798 (tinst_level::to_list, tinst_level::free): Define.
1799 (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
1800 (set_refcount_ptr): New template fn.
1801 (add_pending_template): Adjust for refcounting, freelists and
1802 new accessors.
1803 (neglectable_inst_p): Take a NULL d as a non-DECL.
1804 (limit_bad_template_recursion): Use new accessors.
1805 (push_tinst_level): New overload to create the list.
1806 (push_tinst_level_loc): Make it static, split decl into two
1807 args, adjust tests and initialization to cope with split
1808 lists, use freelist, adjust for refcounting.
1809 (push_tinst_level_loc): New wrapper with the old interface.
1810 (pop_tinst_level): Adjust for refcounting.
1811 (record_last_problematic_instantiation): Likewise.
1812 (reopen_tinst_level): Likewise. Use new accessors.
1813 (instantiate_alias_template): Adjust for split list.
1814 (fn_type_unification): Likewise.
1815 (get_partial_spec_bindings): Likewise.
1816 (instantiate_pending_templates): Use new accessors. Adjust
1817 for refcount. Release pending_template to freelist.
1818 (instantiating_current_function_p): Use new accessors.
1819
1820 2018-04-16 Alexandre Oliva <aoliva@redhat.com>
1821
1822 PR c++/85039
1823 * parser.c (cp_parser_builtin_offset): Reject type definitions.
1824 * mangle.c (nested_anon_class_index): Avoid crash returning -1
1825 if we've seen errors.
1826
1827 2018-04-12 David Malcolm <dmalcolm@redhat.com>
1828
1829 PR c++/85385
1830 * name-lookup.c (macro_use_before_def::maybe_make): New function,
1831 checking that the use is indeed before the definition.
1832 (macro_use_before_def::macro_use_before_def): Make private.
1833 (macro_use_before_def::~macro_use_before_def): Make private. Move
1834 check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
1835 (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
1836 than using new directly.
1837
1838 2018-04-12 Jason Merrill <jason@redhat.com>
1839
1840 PR c++/85356 - ICE with pointer to member function.
1841 * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
1842 flag_noexcept_type. Build the new spec within the function context.
1843 * except.c (build_noexcept_spec): Do get constant value in templates
1844 if flag_noexcept_type.
1845 * decl.c (check_redeclaration_exception_specification): Don't
1846 instantiate noexcept on a dependent declaration.
1847
1848 2018-04-12 Marek Polacek <polacek@redhat.com>
1849
1850 PR c++/85258
1851 * constexpr.c (reduced_constant_expression_p): Return false for null
1852 trees.
1853
1854 2018-04-11 Marek Polacek <polacek@redhat.com>
1855
1856 PR c++/85032
1857 * constexpr.c (potential_constant_expression_1): Consider conversions
1858 from classes to literal types potentially constant.
1859
1860 2018-04-10 Paolo Carlini <paolo.carlini@oracle.com>
1861
1862 PR c++/70808
1863 * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
1864 the type like TYPE_PTR_OR_PTRMEM_P.
1865
1866 2018-04-10 Jason Merrill <jason@redhat.com>
1867
1868 PR debug/65821 - wrong location for main().
1869 * call.c (clear_location_r, convert_default_arg): Revert.
1870 * tree.c (break_out_target_exprs): Add clear_location parm.
1871 (struct bot_data): New.
1872 (bot_manip): Clear location if requested.
1873 * init.c (get_nsdmi): Pass clear_location.
1874
1875 2018-04-10 David Malcolm <dmalcolm@redhat.com>
1876
1877 PR c++/85110
1878 * call.c (get_fndecl_argument_location): Make non-static.
1879 * cp-tree.h (get_fndecl_argument_location): New decl.
1880 * typeck.c (convert_for_assignment): When complaining due to
1881 conversions for an argument, show the location of the parameter
1882 within the decl.
1883
1884 2018-04-10 Jakub Jelinek <jakub@redhat.com>
1885
1886 PR c++/85312 - P0962 cleanup
1887 * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
1888 diagnostics.
1889
1890 2018-04-10 Jason Merrill <jason@redhat.com>
1891
1892 PR debug/65821 - wrong location for main().
1893 * call.c (clear_location_r): New.
1894 (convert_default_arg): Use it.
1895 * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
1896
1897 PR c++/85285 - ICE with flexible array after substitution.
1898 * pt.c (instantiate_class_template_1): Check for flexible array in
1899 union.
1900
1901 2018-04-09 Paolo Carlini <paolo.carlini@oracle.com>
1902
1903 PR c++/85227
1904 * decl.c (cp_finish_decomp): In a template, if the type is incomplete
1905 issue a pedwarn and defer trying to do bindings.
1906
1907 2018-04-09 Jason Merrill <jason@redhat.com>
1908
1909 PR c++/85279 - dump_expr doesn't understand decltype.
1910 * error.c (dump_expr): Handle DECLTYPE_TYPE.
1911
1912 PR c++/85262 - ICE with redundant qualification on constructor.
1913 * call.c (build_new_method_call_1): Move make_args_non_dependent
1914 after A::A() handling.
1915
1916 PR c++/85277 - ICE with invalid offsetof.
1917 * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
1918 Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
1919
1920 PR c++/85264 - ICE with excess template-parameter-list.
1921 * parser.c (cp_parser_check_template_parameters): Add template_id_p
1922 parameter. Don't allow an extra template header if true.
1923 (cp_parser_class_head): Pass template_id_p.
1924 (cp_parser_elaborated_type_specifier): Likewise.
1925 (cp_parser_alias_declaration): Likewise.
1926 (cp_parser_check_declarator_template_parameters): Likewise.
1927
1928 2018-04-09 Jakub Jelinek <jakub@redhat.com>
1929
1930 PR c++/85194
1931 * parser.c (cp_parser_simple_declaration): For structured bindings,
1932 if *maybe_range_for_decl is NULL after parsing it, set it to
1933 error_mark_node.
1934
1935 2018-04-09 Jason Merrill <jason@redhat.com>
1936
1937 PR c++/85256 - ICE capturing pointer to VLA.
1938 * lambda.c (add_capture): Distinguish between variable-size and
1939 variably-modified types.
1940
1941 2018-04-06 Jason Merrill <jason@redhat.com>
1942
1943 PR c++/85214 - ICE with alias, generic lambda, constexpr if.
1944 * pt.c (extract_locals_r): Remember local typedefs.
1945
1946 2018-04-06 David Malcolm <dmalcolm@redhat.com>
1947
1948 PR c++/84269
1949 * name-lookup.c (struct std_name_hint): Move out of
1950 get_std_name_hint; add field "min_dialect".
1951 (get_std_name_hint): Add min_dialect values to all initializers.
1952 Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
1953 <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
1954 <shared_mutex>, <string_view>, <thread>, and <variant>.
1955 Add fstream, ifstream, and ofstream to <fstream>.
1956 Add istringstream, ostringstream, and stringstream to <sstream>.
1957 Add basic_string to <string>.
1958 Add tuple_element and tuple_size to <tuple>.
1959 Add declval to <utility>.
1960 Fix ordering of <queue> and <tuple>.
1961 Return a std_name_hint, rather than a const char *.
1962 (get_cxx_dialect_name): New function.
1963 (maybe_suggest_missing_std_header): Detect names that aren't yet
1964 available in the current dialect, and instead of suggesting a
1965 missing #include, warn about the dialect.
1966
1967 2018-04-06 Jakub Jelinek <jakub@redhat.com>
1968
1969 PR c++/85210
1970 * pt.c (tsubst_decomp_names): Return error_mark_node and assert
1971 errorcount is set if tsubst doesn't return a VAR_DECL.
1972
1973 2018-04-06 David Malcolm <dmalcolm@redhat.com>
1974
1975 PR c++/85021
1976 * name-lookup.c (using_directives_contain_std_p): New function.
1977 (has_using_namespace_std_directive_p): New function.
1978 (suggest_alternatives_for): Simplify if/else logic using early
1979 returns. If no candidates were found, and there's a
1980 "using namespace std;" directive, call
1981 maybe_suggest_missing_std_header.
1982 (maybe_suggest_missing_header): Split later part of the function
1983 into..
1984 (maybe_suggest_missing_std_header): New.
1985
1986 2018-04-06 Jason Merrill <jason@redhat.com>
1987
1988 PR c++/85242 - ICE with class definition in template parm.
1989 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
1990 processing_template_parmlist.
1991
1992 PR c++/85240 - LTO ICE with using of undeduced auto fn.
1993 * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
1994
1995 2018-04-05 Jakub Jelinek <jakub@redhat.com>
1996
1997 PR c++/85209
1998 * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
1999 is not prev, if prev == decl.
2000
2001 PR c++/85208
2002 * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
2003 maybe_apply_pragma_weak here...
2004 (cp_maybe_mangle_decomp): ... but call it here instead.
2005
2006 2018-04-05 Jason Merrill <jason@redhat.com>
2007
2008 PR c++/85136 - ICE with designated init in template.
2009 * decl.c (maybe_deduce_size_from_array_init): Handle dependent
2010 designated initializer.
2011 (check_array_designated_initializer): Update ce->index with the
2012 constant value.
2013
2014 PR c++/83808 - ICE with VLA initialization.
2015 * typeck2.c (process_init_constructor_array): Don't require a VLA
2016 initializer to have VLA type.
2017
2018 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
2019
2020 PR c++/80956
2021 * call.c (convert_like_real): Fail gracefully for a broken
2022 std::initializer_list, missing a definition.
2023
2024 * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
2025
2026 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
2027
2028 PR c++/84792
2029 * decl.c (grokdeclarator): Fix diagnostic about typedef name used
2030 as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
2031
2032 2018-04-05 Jason Merrill <jason@redhat.com>
2033
2034 PR c++/82152 - ICE with class deduction and inherited ctor.
2035 * pt.c (do_class_deduction): Ignore inherited ctors.
2036
2037 PR c++/84665 - ICE with array of empty class.
2038 * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
2039
2040 PR c++/85228 - ICE with lambda in enumerator in template.
2041 * pt.c (bt_instantiate_type_proc): Don't assume
2042 CLASSTYPE_TEMPLATE_INFO is non-null.
2043
2044 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
2045
2046 Implement P0969
2047 * decl.c (find_decomp_class_base): Check accessibility instead
2048 of declared access, adjust diagnostic.
2049
2050 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
2051
2052 Implement P0961
2053 * decl.c (get_tuple_decomp_init): Check the templatedness
2054 of a member get.
2055
2056 2018-04-05 Jason Merrill <jason@redhat.com>
2057
2058 PR c++/85200 - ICE with constexpr if in generic lambda.
2059 * pt.c (extract_locals_r): Don't record the local specs of variables
2060 declared within the pattern.
2061
2062 2018-04-05 Alexandre Oliva <aoliva@redhat.com>
2063
2064 PR c++/84979
2065 * pt.c (check_auto_in_tmpl_args): New.
2066 (tsubst_qualified_id): Use it to reject template args
2067 referencing auto for non-type templates.
2068 * parser.c (cp_parser_template_id): Likewise.
2069 * cp-tree.h (check_auto_in_tmpl_args): Declare.
2070 * typeck2.c (build_functional_cast): Report correct location
2071 for invalid use of auto.
2072
2073 2018-04-04 Jason Merrill <jason@redhat.com>
2074
2075 PR c++/85215 - ICE with copy-init from conversion.
2076 * call.c (merge_conversion_sequences): Fix type of direct binding
2077 sequence.
2078
2079 PR c++/84938 - ICE with division by ~-1.
2080 * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
2081
2082 PR c++/84936 - ICE with unexpanded pack in mem-initializer.
2083 * parser.c (cp_parser_mem_initializer_list): Call
2084 check_for_bare_parameter_packs.
2085
2086 2018-04-04 Jakub Jelinek <jakub@redhat.com>
2087
2088 PR inline-asm/85172
2089 * constexpr.c (cxx_eval_builtin_function_call): For calls to
2090 builtin_valid_in_constant_expr_p functions, don't call
2091 cxx_eval_constant_expression if argument is not
2092 potential_constant_expression.
2093
2094 PR c++/85146
2095 * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
2096 argument.
2097 * semantics.c (calculate_bases): Add complain argument. Use
2098 complete_type_or_maybe_complain instead of just complete_type and
2099 return an empty vector if it fails. Move make_tree_vector () call
2100 after early return. Formatting fixes.
2101 (calculate_direct_bases): Likewise. Call release_tree_vector at the
2102 end.
2103 (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
2104 * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
2105 calculate_direct_bases callers, formatting fixes.
2106
2107 2018-04-04 Jason Merrill <jason@redhat.com>
2108
2109 PR c++/85006 - -fconcepts ICE with A<auto...> return type
2110 * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
2111
2112 PR c++/85200 - ICE with constexpr if in generic lambda.
2113 * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
2114
2115 PR c++/84221 - bogus -Wunused with attribute and template.
2116 * decl2.c (is_late_template_attribute): Handle unused and used
2117 normally on non-TYPE_DECL.
2118
2119 PR c++/85135 - ICE with omitted template arguments.
2120 * decl.c (grokdeclarator): Catch deduced class type in trailing
2121 return type.
2122
2123 PR c++/85133 - ICE with missing concept initializer.
2124 * decl.c (cp_finish_decl): If a concept initializer is missing, use
2125 true.
2126
2127 PR c++/85118 - wrong error with generic lambda and std::bind.
2128 * call.c (add_template_conv_candidate): Disable if there are any
2129 call operators.
2130
2131 PR c++/85141 - ICE with compound assignment and static member fn.
2132 * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
2133 compound assignment.
2134
2135 PR c++/85148 - ICE with 'this' in array NSDMI.
2136 * tree.c (replace_placeholders_r): Use handled_component_p.
2137
2138 2018-04-04 Ville Voutilainen <ville.voutilainen@gmail.com>
2139
2140 PR c++/65923
2141 * decl.c (grokfndecl): Handle standard UDL diagnostics here..
2142 * parser.c (cp_parser_unqualified_id): ..not here.
2143
2144 2018-04-04 Alexandre Oliva <aoliva@redhat.com>
2145
2146 PR c++/84943
2147 * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
2148 used.
2149 * decl2.c (mark_used): Return without effects if tf_conv.
2150
2151 2018-04-03 Jason Merrill <jason@redhat.com>
2152
2153 PR c++/85092 - C++17 ICE with unused list constructor.
2154 * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
2155 from a TARGET_EXPR.
2156
2157 PR c++/85113 - ICE with constexpr and __builtin_constant_p.
2158 * constexpr.c (cxx_eval_builtin_function_call): Only defer
2159 __builtin_constant_p if ctx->quiet.
2160
2161 2018-04-03 Paolo Carlini <paolo.carlini@oracle.com>
2162
2163 PR c++/84768
2164 * pt.c (rewrite_template_parm): If the first argument is
2165 error_mark_node return it immediately.
2166 (build_deduction_guide): Check the return value of the
2167 latter for error_mark_node.
2168 (do_class_deduction): Check the return value of the latter.
2169
2170 2018-04-03 Jason Merrill <jason@redhat.com>
2171
2172 * semantics.c (finish_if_stmt_cond): Use
2173 instantiation_dependent_expression_p.
2174
2175 PR c++/85149 - generic lambda and constexpr if.
2176 * pt.c (build_extra_args, add_extra_args): Split from
2177 tsubst_pack_expansion.
2178 (tsubst_expr) [IF_STMT]: Use them.
2179 * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
2180
2181 * typeck.c (merge_types): Limit matching attribute shortcut to
2182 the default case.
2183
2184 2018-04-03 Jakub Jelinek <jakub@redhat.com>
2185
2186 PR c++/85147
2187 * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
2188
2189 PR c++/85140
2190 * name-lookup.c (handle_namespace_attrs): Return early if attributes
2191 is error_mark_node.
2192
2193 PR c++/85134
2194 * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
2195 fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
2196 instead for static data members clear init and set DECL_EXTERNAL.
2197
2198 2018-04-02 Jason Merrill <jason@redhat.com>
2199
2200 PR c++/64095 - auto... parameter pack.
2201 * parser.c (cp_parser_parameter_declaration): Handle turning autos
2202 into packs here.
2203 (cp_parser_parameter_declaration_list): Not here.
2204
2205 2018-03-31 Alexandre Oliva <aoliva@redhat.com>
2206
2207 PR c++/85027
2208 * class.c (instantiate_type): Peel off SAVE_EXPR before
2209 BASELINK.
2210
2211 2018-03-30 Jason Merrill <jason@redhat.com>
2212
2213 * typeck2.c (process_init_constructor_record): Use
2214 init_list_type_node for the CONSTRUCTOR around an anonymous union
2215 designated initializer.
2216
2217 2018-03-30 Jakub Jelinek <jakub@redhat.com>
2218
2219 PR c++/84791
2220 * semantics.c (finish_omp_reduction_clause): If
2221 OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
2222 even if processing_template_decl.
2223
2224 2018-03-29 David Malcolm <dmalcolm@redhat.com>
2225
2226 PR c++/84269
2227 * name-lookup.c (get_std_name_hint): Add names from <memory>,
2228 <tuple>, and <utility>.
2229
2230 2018-03-29 Jason Merrill <jason@redhat.com>
2231
2232 PR c++/85093 - too many template args with pack expansion.
2233 * pt.c (coerce_template_parms): Keep pack expansion args that will
2234 need to be empty.
2235
2236 2018-03-29 Jason Merrill <jason@redhat.com>
2237
2238 * pt.c (build_non_dependent_expr): Propagate expr location.
2239
2240 2018-03-27 Jason Merrill <jason@redhat.com>
2241
2242 PR c++/85060 - wrong-code with call to base member in template.
2243 * search.c (any_dependent_bases_p): Check uses_template_parms
2244 rather than processing_template_decl.
2245
2246 2018-03-29 David Malcolm <dmalcolm@redhat.com>
2247
2248 PR c++/85110
2249 * typeck.c (convert_for_assignment): When complaining due to
2250 conversions for an argument, attempt to use the location of the
2251 argument.
2252
2253 2018-03-28 Paolo Carlini <paolo.carlini@oracle.com>
2254
2255 PR c++/85028
2256 * pt.c (tsubst_default_argument): Early return if the type of the
2257 parameter is erroneous.
2258
2259 2018-03-28 Alexandre Oliva <aoliva@redhat.com>
2260
2261 PR c++/84973
2262 * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
2263 templates.
2264
2265 PR c++/84968
2266 * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
2267
2268 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
2269
2270 PR c++/85067
2271 * method.c (defaulted_late_check): Partially revert r253321 changes,
2272 do not early return upon error.
2273
2274 2018-03-27 Jakub Jelinek <jakub@redhat.com>
2275
2276 PR c++/85077
2277 * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
2278 type call fold to generate VECTOR_CSTs when possible.
2279
2280 PR c++/85076
2281 * tree.c (cp_build_reference_type): If to_type is error_mark_node,
2282 return it right away.
2283
2284 2018-03-27 Volker Reichelt <v.reichelt@netcologne.de>
2285
2286 * search.c (check_final_overrider): Use inform instead of error
2287 for the diagnostics of the overridden functions. Tweak wording.
2288
2289 2018-03-27 Jakub Jelinek <jakub@redhat.com>
2290
2291 PR c++/85068
2292 * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
2293 is NULL. Assert if thunk_binfo is NULL then errorcount is non-zero.
2294
2295 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
2296 Jason Merrill <jason@redhat.com>
2297
2298 PR c++/84632
2299 * init.c (build_aggr_init): When initializing from array,
2300 reject anything but CONSTRUCTORs and TARGET_EXPRs.
2301 (build_vec_init): Handle separately ARRAY_TYPEs.
2302
2303 2018-03-26 Jason Merrill <jason@redhat.com>
2304
2305 PR c++/85062 - ICE with alignas in wrong place.
2306 * decl.c (grokdeclarator): Ignore attributes on type-specifiers
2307 here.
2308
2309 PR c++/85049 - ICE with __integer_pack.
2310 * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
2311 * cp-tree.h (TEMPLATE_PARM_P): New.
2312
2313 2018-03-23 Jason Merrill <jason@redhat.com>
2314
2315 PR c++/78489 - wrong SFINAE behavior.
2316
2317 PR c++/84489
2318 * pt.c (type_unification_real): Don't defer substitution failure.
2319
2320 2018-03-23 Jakub Jelinek <jakub@redhat.com>
2321
2322 PR c++/85015
2323 * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
2324 result.
2325
2326 PR c++/84942
2327 * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
2328 cp_build_unary_op call with gcc_unreachable ().
2329
2330 2018-03-23 Marek Polacek <polacek@redhat.com>
2331
2332 PR c++/85045
2333 * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
2334 Handle EXACT_DIV_EXPR and RDIV_EXPR. Tweak condition.
2335 (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
2336
2337 2018-03-23 Ville Voutilainen <ville.voutilainen@gmail.com>
2338
2339 Implement P0962
2340 * parser.c (cp_parser_perform_range_for_lookup): Change
2341 the condition for deciding whether to use members.
2342
2343 2018-03-23 Marek Polacek <polacek@redhat.com>
2344
2345 PR c++/85033
2346 * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
2347
2348 2018-03-23 Alexandre Oliva <aoliva@redhat.com>
2349
2350 PR c++/71251
2351 * parser.c (cp_parser_alias_declaration): Call
2352 parser_check_template_parameters.
2353
2354 PR c++/84789
2355 * pt.c (resolve_typename_type): Drop assert that stopped
2356 simplification to template-independent types. Add assert to
2357 verify the initial scope is template dependent.
2358 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
2359 Reparse the id expression as a type-name, not a declarator.
2360
2361 PR c++/84729
2362 * init.c (build_vec_init): Error at parenthesized array init.
2363
2364 PR c++/84610
2365 PR c++/84642
2366 PR c++/84942
2367 * cp-tree.h (temp_override): New template class, generalizing
2368 a cleanup that was only used...
2369 * parser.c (cp_parser_parameter_declaration_clause):
2370 ... here for auto_is_implicit_function_template_parm_p.
2371 (cp_parser_gnu_attributes_opt): Use it here as well.
2372 (cp_parser_std_attribute): Likewise.
2373
2374 2018-03-22 Marek Polacek <polacek@redhat.com>
2375
2376 PR c++/84854
2377 * semantics.c (finish_if_stmt_cond): Check if the type of the condition
2378 is boolean.
2379
2380 2018-03-21 Jason Merrill <jason@redhat.com>
2381
2382 PR c++/81311 - wrong C++17 overload resolution.
2383 * call.c (build_user_type_conversion_1): Remove C++17 code.
2384 (conv_binds_ref_to_prvalue): New.
2385 (build_over_call): Handle C++17 copy elision.
2386 (build_special_member_call): Only do C++17 copy elision here if the
2387 argument is already the right type.
2388
2389 2018-03-21 Alexandre Oliva <aoliva@redhat.com>
2390
2391 PR c++/71965
2392 * init.c (build_vec_init): Silence error, former sorry,
2393 without tf_error.
2394
2395 PR c++/84610
2396 PR c++/84642
2397 * parser.c (abort_fully_implicit_template_p): New.
2398 (cp_parser_skip_to_end_of_statement): Use it.
2399 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2400 (finish_fully_implicit_template_p): Clear
2401 implicit_template_parms and implicit_template_scope.
2402
2403 2018-03-21 Paolo Carlini <paolo.carlini@oracle.com>
2404
2405 PR c++/84972
2406 * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
2407 error_mark_node when check_array_designated_initializer fails.
2408
2409 2018-03-21 Jakub Jelinek <jakub@redhat.com>
2410
2411 PR c++/84961
2412 * cp-tree.h (genericize_compound_lvalue): Declare.
2413 * typeck.c (genericize_compound_lvalue): New function.
2414 (unary_complex_lvalue, cp_build_modify_expr): Use it.
2415 * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
2416 and PREDECREMENT_EXPR in output and "m" constrained input operands with
2417 COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost
2418 COMPOUND_EXPR operand.
2419
2420 2018-03-21 Nathan Sidwell <nathan@acm.org>
2421
2422 PR c++/85008
2423 * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
2424 * decl2.c (vague_linkage_p): Likewise.
2425
2426 2018-03-21 David Malcolm <dmalcolm@redhat.com>
2427
2428 PR c++/84994
2429 * constexpr.c (constexpr_fn_retval): Make non-"static".
2430 * cp-tree.h (constexpr_fn_retval): New decl.
2431 * search.c (direct_accessor_p): Update leading comment.
2432 (reference_accessor_p): Likewise.
2433 (field_accessor_p): Replace check that function body is a
2434 RETURN_EXPR with a call to constexpr_fn_retval. Fix
2435 indentation of "field_type" decl.
2436
2437 2018-03-21 Nathan Sidwell <nathan@acm.org>
2438
2439 PR c++/84804
2440 * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
2441 complete classes.
2442
2443 2018-03-21 Martin Sebor <msebor@redhat.com>
2444
2445 PR c++/84850
2446 * call.c (first_non_public_field): New template and function.
2447 (first_non_trivial_field): New function.
2448 (maybe_warn_class_memaccess): Call them.
2449
2450 2018-03-21 David Malcolm <dmalcolm@redhat.com>
2451
2452 PR c++/84892
2453 * search.c (field_accessor_p): Use class_of_this_parm rather than
2454 type_of_this_parm, to check that "this" is a "const T *", rather
2455 than a "T *const".
2456
2457 2018-03-21 Nathan Sidwell <nathan@acm.org>
2458
2459 * class.c (finish_struct_anon_r): Refactor, deprecate anything
2460 other than public non-static data members.
2461 * parser.c (cp_parser_init_declarator): Deprecate attributes after
2462 parenthesized initializer.
2463
2464 PR c++/84836
2465 * name-lookup.c (update_binding): Correct logic for local binding
2466 update.
2467
2468 2018-03-21 Marek Polacek <polacek@redhat.com>
2469
2470 PR c++/71638, ICE with NSDMI and reference.
2471 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2472 even when we replace an element.
2473
2474 2018-03-20 Marek Polacek <polacek@redhat.com>
2475
2476 PR c++/84978, ICE with NRVO.
2477 * constexpr.c (cxx_eval_constant_expression): Handle the case when
2478 a RESULT_DECL isn't in the hash map.
2479
2480 2018-03-20 Jason Merrill <jason@redhat.com>
2481
2482 PR c++/84978, ICE with NRVO.
2483 * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
2484 (cp_get_callee_fndecl_nofold): New.
2485 * cp-gimplify.c (cp_genericize_r): Use it instead.
2486 * call.c (check_self_delegation): Likewise.
2487
2488 2018-03-20 Nathan Sidwell <nathan@acm.org>
2489
2490 PR c++/84962
2491 * name-lookup.c (pushdecl_class_level): Push anon-struct's
2492 member_vec, if there is one.
2493
2494 PR c++/84970
2495 * cp-tree.h (lookup_list_keep): Declare.
2496 * tree.c (lookup_list_keep): New, broken out of ...
2497 (build_min): ... here. Call it.
2498 * decl.c (cp_finish_decl): Call lookup_list_keep.
2499
2500 2018-03-19 Jason Merrill <jason@redhat.com>
2501
2502 PR c++/84937 - ICE with class deduction and auto.
2503 * pt.c (rewrite_template_parm): Fix auto handling.
2504
2505 2018-03-19 Marek Polacek <polacek@redhat.com>
2506
2507 PR c++/84925
2508 * pt.c (enclosing_instantiation_of): Check if fn is null.
2509
2510 PR c++/84927
2511 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
2512 as we evaluate the elements.
2513 (cxx_eval_constant_expression): Verify constructor's flags
2514 unconditionally.
2515
2516 2018-03-19 Jason Merrill <jason@redhat.com>
2517
2518 PR c++/71834 - template-id with too few arguments.
2519 * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
2520
2521 2018-03-19 Nathan Sidwell <nathan@acm.org>
2522
2523 PR c++/84835
2524 * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
2525 * pt.c (build_template_decl): Propagate language linkage.
2526
2527 PR c++/84812
2528 * name-lookup.c (set_local_extern_decl_linkage): Defend against
2529 ambiguous lookups.
2530
2531 2018-03-16 Jakub Jelinek <jakub@redhat.com>
2532
2533 PR c/84910
2534 * parser.c (cp_parser_lambda_introducer): Remove trailing space from
2535 diagnostics.
2536 * method.c (synthesize_method): Likewise.
2537 * pt.c (convert_nontype_argument): Likewise.
2538
2539 2018-03-16 Jason Merrill <jason@redhat.com>
2540
2541 PR c++/84720 - ICE with rvalue ref non-type argument.
2542 * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
2543 (convert_nontype_argument): Revert earlier change.
2544
2545 PR c++/80227 - SFINAE and negative array size.
2546 * decl.c (compute_array_index_type): Use
2547 build_converted_constant_expr and valid_constant_size_p.
2548
2549 PR c++/84906 - silent wrong code with ambiguous conversion.
2550 * call.c (build_user_type_conversion_1): Set need_temporary_p on
2551 ambiguous conversion.
2552 (convert_like_real): Check it.
2553
2554 PR c++/83937 - wrong C++17 handling of init-list ctor argument.
2555 * call.c (build_special_member_call): Don't convert an init-list
2556 argument directly to the class type.
2557
2558 2018-03-16 Jakub Jelinek <jakub@redhat.com>
2559
2560 PR c++/79937
2561 PR c++/82410
2562 * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
2563 (find_placeholder): Declare.
2564 * tree.c (struct replace_placeholders_t): Add exp member.
2565 (replace_placeholders_r): Don't walk into ctors with
2566 CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
2567 d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
2568 (replace_placeholders): Initialize data.exp.
2569 (find_placeholders_r, find_placeholders): New functions.
2570 * typeck2.c (process_init_constructor_record,
2571 process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
2572 if adding NSDMI on which find_placeholder returns true.
2573 * call.c (build_over_call): Don't call replace_placeholders here.
2574 * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
2575 TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
2576 TARGET_EXPR_INITIAL.
2577 (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
2578 ctor.
2579
2580 2018-03-16 Jason Merrill <jason@redhat.com>
2581
2582 PR c++/83911 - ICE with multiversioned constructor.
2583 * cp-gimplify.c (cp_genericize_r): Replace versioned function with
2584 dispatchere here.
2585 * call.c (build_over_call): Not here.
2586
2587 2018-03-16 Jakub Jelinek <jakub@redhat.com>
2588
2589 PR c++/84874
2590 * decl.c (reshape_init_class): Don't assert d->cur->index == field
2591 if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
2592
2593 2018-03-15 Jakub Jelinek <jakub@redhat.com>
2594
2595 PR c++/84222
2596 * cp-tree.h (cp_warn_deprecated_use): Declare.
2597 * tree.c (cp_warn_deprecated_use): New function.
2598 * typeck2.c (build_functional_cast): Use it.
2599 * decl.c (grokparms): Likewise.
2600 (grokdeclarator): Likewise. Temporarily push nested class scope
2601 around grokparms call for out of class member definitions.
2602
2603 2018-03-14 Jason Merrill <jason@redhat.com>
2604
2605 PR c++/84820 - no error for invalid qualified-id.
2606 * parser.c (cp_parser_make_indirect_declarator): Don't wrap
2607 cp_error_declarator.
2608
2609 PR c++/84801 - ICE with unexpanded pack in lambda.
2610 * pt.c (check_for_bare_parameter_packs): Don't return early for a
2611 lambda in non-template context.
2612
2613 PR c++/81236 - auto variable and auto function
2614 * pt.c (tsubst_baselink): Update the type of the BASELINK after
2615 mark_used.
2616
2617 2018-03-14 Jason Merrill <jason@redhat.com>
2618
2619 PR c++/83916 - ICE with template template parameters.
2620 * pt.c (convert_template_argument): Don't substitute into type of
2621 non-type parameter if we don't have enough arg levels.
2622 (unify): Likewise.
2623
2624 2018-03-14 Marek Polacek <polacek@redhat.com>
2625
2626 PR c++/84596
2627 * semantics.c (finish_static_assert): Check
2628 instantiation_dependent_expression_p instead of
2629 {type,value}_dependent_expression_p.
2630
2631 2018-03-13 Paolo Carlini <paolo.carlini@oracle.com>
2632 Jason Merrill <jason@redhat.com>
2633
2634 PR c++/82336 - link error with list-init default argument.
2635 * decl.c (check_default_argument): Unshare an initializer list.
2636
2637 2018-03-13 Jakub Jelinek <jakub@redhat.com>
2638
2639 PR c++/84843
2640 * decl.c (duplicate_decls): For redefinition of built-in, use error
2641 and return error_mark_node. For redeclaration, return error_mark_node
2642 rather than olddecl if !flag_permissive.
2643
2644 2018-03-13 Jason Merrill <jason@redhat.com>
2645
2646 PR c++/82565 - ICE with concepts and generic lambda.
2647 * pt.c (instantiate_decl): Clear fn_context for lambdas.
2648
2649 2018-03-13 Jason Merrill <jason@redhat.com>
2650
2651 PR c++/84720 - ICE with rvalue ref non-type argument.
2652 * pt.c (convert_nontype_argument): Handle rvalue references.
2653
2654 PR c++/84839 - ICE with decltype of parameter pack.
2655 * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
2656 instantiating dummy parms.
2657
2658 * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
2659 parameter even without -Wpedantic.
2660
2661 PR c++/84798 - ICE with auto in abstract function declarator.
2662 * parser.c (cp_parser_parameter_declaration_clause): Check
2663 parser->default_arg_ok_p.
2664
2665 2018-03-13 Jakub Jelinek <jakub@redhat.com>
2666
2667 PR c++/84808
2668 * constexpr.c (find_array_ctor_elt): Don't use elt reference after
2669 first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
2670 sizetype. Formatting fixes.
2671
2672 2018-03-12 Jason Merrill <jason@redhat.com>
2673
2674 PR c++/84355 - ICE with deduction for member class template.
2675 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
2676 CLASS_PLACEHOLDER_TEMPLATE.
2677
2678 PR c++/84802 - ICE capturing uninstantiated class.
2679 * lambda.c (build_capture_proxy): Call complete_type.
2680
2681 2018-03-09 Jason Merrill <jason@redhat.com>
2682
2683 PR c++/84770 - ICE with typedef and parameter pack.
2684 * pt.c (verify_unstripped_args_1): Split out from
2685 verify_unstripped_args.
2686
2687 PR c++/84785 - ICE with alias template and default targs.
2688 * pt.c (type_unification_real): Set processing_template_decl if
2689 saw_undeduced == 1.
2690
2691 PR c++/84752 - ICE with capture of constexpr array.
2692 * call.c (standard_conversion): Set rvaluedness_matches_p on the
2693 identity conversion under ck_lvalue.
2694
2695 2018-03-09 Jason Merrill <jason@redhat.com>
2696 Paolo Carlini <paolo.carlini@oracle.com>
2697
2698 PR c++/71169
2699 PR c++/71832
2700 * pt.c (any_erroneous_template_args_p): New.
2701 * cp-tree.h (any_erroneous_template_args_p): Declare it.
2702 * parser.c (cp_parser_class_specifier_1): Use it.
2703
2704 2018-03-09 Jason Merrill <jason@redhat.com>
2705
2706 PR c++/84726 - unnecessary capture of constant vars.
2707 * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
2708 (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
2709 * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
2710 * lambda.c (is_constant_capture_proxy)
2711 (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
2712 (prune_lambda_captures): New.
2713 (finish_lambda_function): Call prune_lambda_captures.
2714
2715 2018-03-09 Jason Merrill <jason@redhat.com>
2716 Jakub Jelinek <jakub@redhat.com>
2717
2718 PR c++/84076
2719 * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
2720 build ADDR_EXPR with REFERENCE_TYPE.
2721 (build_over_call): For purposes of check_function_arguments, if
2722 argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
2723 its operand rather than the argument itself.
2724
2725 2018-03-09 Jakub Jelinek <jakub@redhat.com>
2726
2727 PR c++/84724
2728 * decl.c (duplicate_decls): Don't override __* prefixed builtins
2729 except for __[^b]*_chk, instead issue permerror and for -fpermissive
2730 also a note and return olddecl.
2731
2732 2018-03-09 Nathan Sidwell <nathan@acm.org>
2733
2734 PR c++/84733
2735 * name-lookup.c (do_pushdecl_with_scope): Only clear
2736 current_function_decl when pushing a non-class (i.e. namespace)
2737 scope.
2738
2739 2018-03-08 Jason Merrill <jason@redhat.com>
2740 Jakub Jelinek <jakub@redhat.com>
2741
2742 PR c++/80598
2743 * call.c (build_over_call): In templates set TREE_USED (first_fn) when
2744 not calling mark_used for the benefit of -Wunused-function warning.
2745
2746 2018-03-06 Jason Merrill <jason@redhat.com>
2747
2748 * lambda.c (is_capture_proxy_with_ref): Remove.
2749 * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
2750
2751 2018-03-06 Marek Polacek <polacek@redhat.com>
2752
2753 PR c++/84684
2754 * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
2755 arguments.
2756
2757 2018-03-06 Alexandre Oliva <aoliva@redhat.com>
2758
2759 PR c++/84231
2760 * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
2761 only while processing template decls.
2762 * typeck.c (build_x_conditional_expr): Move wrapping of
2763 reference type around type...
2764 * call.c (build_conditional_expr_1): ... here. Rename
2765 is_lvalue to is_glvalue.
2766 * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
2767 INDIRECT_REF of COND_EXPR too.
2768
2769 PR c++/84593
2770 * init.c (build_zero_init_1): Zero-initialize references.
2771
2772 PR c++/84492
2773 * semantics.c (finish_stmt_expr_expr): Reject unresolved
2774 overloads used as stmt expr values.
2775
2776 2018-03-05 Jason Merrill <jason@redhat.com>
2777
2778 PR c++/84708 - ICE with lambda in local class NSDMI.
2779 * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
2780 context.
2781
2782 2018-03-05 Jakub Jelinek <jakub@redhat.com>
2783
2784 PR c++/84684
2785 * constexpr.c (constexpr_call_hasher::equal): Return false if
2786 lhs->hash != rhs->hash. Change return 1 to return true and
2787 return 0 to return false.
2788
2789 2018-03-05 Nathan Sidwell <nathan@acm.org>
2790
2791 PR c++/84702
2792 * pt.c (process_template_arg): Mark lookup_keep on a default arg.
2793
2794 2018-03-05 Marek Polacek <polacek@redhat.com>
2795
2796 PR c++/84707
2797 * decl.c (duplicate_decls): Check DECL_NAME before accessing
2798 UDLIT_OPER_P.
2799
2800 2018-03-05 Nathan Sidwell <nathan@acm.org>
2801
2802 PR c++/84694
2803 * friend.c (do_friend): Restore check for identifier_p inside
2804 TEMPLATE_ID_EXPR.
2805
2806 2018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
2807
2808 PR c++/84618
2809 * parser.c (cp_parser_lambda_introducer): Reject any capture not
2810 involving a VAR_DECL or a PARM_DECL.
2811
2812 2018-03-05 Pádraig Brady <P@draigBrady.com>
2813 Jason Merrill <jason@redhat.com>
2814 Nathan Sidwell <nathan@acm.org>
2815
2816 PR c++/84497
2817 * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
2818
2819 2018-03-03 Jason Merrill <jason@redhat.com>
2820
2821 PR c++/84686 - missing volatile loads.
2822 * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
2823
2824 2018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
2825
2826 PR c++/71464
2827 * optimize.c (maybe_thunk_body): Bail out immediately if either
2828 fns[0] or fns[1] is null.
2829
2830 2018-03-02 Marek Polacek <polacek@redhat.com>
2831
2832 PR c++/84578
2833 * constexpr.c (get_array_or_vector_nelts): New.
2834 (cxx_eval_array_reference): Use it.
2835 (cxx_eval_vec_init_1): Likewise.
2836 (cxx_eval_store_expression): Likewise.
2837
2838 2018-03-02 Jason Merrill <jason@redhat.com>
2839
2840 * semantics.c (force_paren_expr): Remove redundant test.
2841
2842 2018-03-02 Marek Polacek <polacek@redhat.com>
2843
2844 PR c++/84663
2845 * decl.c (cp_complete_array_type): Check error_mark_node.
2846
2847 PR c++/84664
2848 * typeck.c (cp_perform_integral_promotions): Check the result of
2849 mark_rvalue_use.
2850
2851 2018-03-02 Jakub Jelinek <jakub@redhat.com>
2852
2853 PR c++/84662
2854 * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
2855 RETURN instead of return.
2856 <case POINTER_PLUS_EXPR>: Likewise.
2857 <case CONVERT_EXPR>: If op0 is error_mark_node, just return
2858 it instead of wrapping it into CONVERT_EXPR.
2859
2860 2018-03-02 Jason Merrill <jason@redhat.com>
2861
2862 Fix MIPS16 ICE.
2863 * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
2864
2865 2018-03-02 Marek Polacek <polacek@redhat.com>
2866
2867 PR c++/84590
2868 * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
2869 wrapped in VIEW_CONVERT_EXPR.
2870
2871 2018-03-01 Martin Sebor <msebor@redhat.com>
2872
2873 PR c++/84294
2874 * decl.c (check_redeclaration_no_default_args): Merge attributes
2875 specified on redeclarations of the same function template.
2876 Remove dead code.
2877
2878 2018-03-01 Marek Polacek <polacek@redhat.com>
2879 Jason Merrill <jason@redhat.com>
2880
2881 PR c++/84582
2882 * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
2883 a template.
2884 (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
2885 * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
2886 of instantiate_non_dependent_expr.
2887 * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
2888
2889 2018-03-01 Nathan Sidwell <nathan@acm.org>
2890
2891 PR c++/84434
2892 * name-lookup.c (member_vec_dedup): Remove manually peeled
2893 iteration. Ignore dependent ctor inheritance.
2894
2895 2018-03-01 Jason Merrill <jason@redhat.com>
2896
2897 PR c++/71569 - decltype of template.
2898 * parser.c (cp_parser_decltype_expr): Handle missing template args.
2899
2900 2018-03-01 Marek Polacek <polacek@redhat.com>
2901
2902 PR c++/84596
2903 * constexpr.c (require_rvalue_constant_expression): New function.
2904 * cp-tree.h: Declare it.
2905 * semantics.c (finish_static_assert): Use it instead of
2906 require_potential_rvalue_constant_expression.
2907
2908 2018-03-01 Jason Merrill <jason@redhat.com>
2909 Alexandre Oliva <aoliva@redhat.com>
2910
2911 PR c++/71569 - ICE with redundant args on member variable template.
2912 * decl.c (start_decl): Handle partial specialization of member
2913 variable template.
2914 * pt.c (determine_specialization): Allow partial specialization
2915 of member variable template without specializing enclosing class.
2916 (process_partial_specialization): Improve error message.
2917
2918 2018-02-28 Jason Merrill <jason@redhat.com>
2919
2920 PR c++/71784 - ICE with ref-qualifier and explicit specialization.
2921 * pt.c (determine_specialization): Check ref-qualifier.
2922
2923 2018-02-28 Jakub Jelinek <jakub@redhat.com>
2924
2925 PR c++/84609
2926 * parser.c (cp_parser_attributes_opt): Formatting fix.
2927 (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
2928 cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
2929 New functions.
2930 (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
2931 instead of tentative parse to peek over optional attribute tokens
2932 to check for CPP_COLON after them.
2933
2934 PR c++/83871
2935 PR c++/83503
2936 * pt.c (INCLUDE_STRING): Remove define.
2937 (warn_spec_missing_attributes): Use pretty_printer instead of
2938 std::string. Fix up inform call so that the list of attributes
2939 is in %s argument.
2940
2941 2018-02-28 Martin Sebor <msebor@redhat.com>
2942
2943 PR testsuite/84617
2944 * decl.c (duplicate_decls): Fully merge attributes const, pure,
2945 and malloc.
2946
2947 2018-02-28 Nathan Sidwell <nathan@acm.org>
2948
2949 PR c++/84602
2950 * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
2951 * name-lookup.c (fields_linear_search): Look in an anon-aggr
2952 regardless of want_type.
2953 (search_anon_aggr): Just use get_class_binding_direct.
2954
2955 2018-02-28 Jakub Jelinek <jakub@redhat.com>
2956
2957 * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
2958 inform_n.
2959
2960 2018-02-27 Martin Sebor <msebor@redhat.com>
2961
2962 * pt.c: Avoid including <string> directly.
2963
2964 2018-02-27 Martin Sebor <msebor@redhat.com>
2965
2966 PR c++/83871
2967 PR c++/83503
2968 * cp-tree.h (warn_spec_missing_attributes): New function.
2969 ((check_explicit_specialization): Add an argument. Call the above
2970 function.
2971 * decl.c (duplicate_decls): Avoid applying primary function template's
2972 attributes to its explicit specializations.
2973 cp/pt.c (warn_spec_missing_attributes): Define.
2974
2975 2018-02-27 HĂĄkon Sandsmark <hsandsmark@gmail.com>
2976
2977 PR c++/71546 - lambda init-capture with qualified-id.
2978 * parser.c (cp_parser_lambda_introducer): Clear scope after
2979 each lambda capture.
2980
2981 2018-02-27 Nathan Sidwell <nathan@acm.org>
2982
2983 PR c++/84426
2984 * name-lookup.h (get_member_slot): Rename ...
2985 (find_member_slot): ... here.
2986 (add_member_slot): New.
2987 * name-lookup.c (member_vec_linear_search): No need to check for
2988 NULL slot.
2989 (get_member_slot): Rename ...
2990 (find_member_slot): ... here. Don't add slot for incomplete class.
2991 (add_member_slot): New.
2992 * class.c (add_method): Adjust get_member_slot rename. Bail out
2993 if push_class_level_binding fails. Create slot and grok
2994 properties once we're committed to insertion.
2995
2996 2018-02-27 Jason Merrill <jason@redhat.com>
2997
2998 PR c++/84489 - dependent default template argument
2999 * pt.c (type_unification_real): Handle early substitution failure.
3000
3001 2018-02-26 Jason Merrill <jason@redhat.com>
3002
3003 PR c++/84560 - ICE capturing multi-dimensional VLA.
3004 * tree.c (array_of_runtime_bound_p): False if the element is
3005 variably-modified.
3006
3007 PR c++/84441 - ICE with base initialized from ?:
3008 * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
3009
3010 PR c++/84520 - ICE with generic lambda in NSDMI.
3011 * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
3012 'this' in a generic lambda instantiation.
3013
3014 PR c++/84559 - ICE with constexpr VLA.
3015 * constexpr.c (ensure_literal_type_for_constexpr_object): Check
3016 for constexpr variable with VLA type.
3017
3018 2018-02-26 Jakub Jelinek <jakub@redhat.com>
3019
3020 PR c++/84558
3021 * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
3022 a valid constant initializer. Formatting fixes.
3023
3024 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
3025
3026 PR c++/84540
3027 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
3028 returning NULL_TREE.
3029 (apply_late_template_attributes): Likewise.
3030
3031 2018-02-26 Jakub Jelinek <jakub@redhat.com>
3032
3033 PR c++/84557
3034 * parser.c (cp_parser_omp_var_list_no_open): Only call
3035 cp_parser_lookup_name_simple on names satisfying identifier_p.
3036 (cp_parser_oacc_routine): Likewise.
3037
3038 2018-02-26 Jason Merrill <jason@redhat.com>
3039
3040 PR c++/84551 - ICE with concepts and -g.
3041 * parser.c (add_debug_begin_stmt): Do nothing in a concept.
3042
3043 2018-02-26 Marek Polacek <polacek@redhat.com>
3044
3045 PR c++/84325
3046 * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
3047 non-types.
3048
3049 2018-02-26 Jason Merrill <jason@redhat.com>
3050
3051 PR c++/84447 - ICE with deleted inherited ctor with default arg.
3052 * call.c (build_over_call): Handle deleted functions in one place.
3053
3054 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
3055
3056 PR c++/84533
3057 * decl.c (redeclaration_error_message): Don't try to use
3058 DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
3059
3060 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
3061
3062 * lambda.c (build_capture_proxy): Define static.
3063 * cp-tree.h (build_capture_proxy): Remove.
3064
3065 2018-02-26 Marek Polacek <polacek@redhat.com>
3066
3067 PR c++/84537
3068 * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
3069 if name is error node.
3070
3071 2018-02-25 Jason Merrill <jason@redhat.com>
3072
3073 PR c++/84015 - ICE with class deduction and auto template parm.
3074 * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
3075
3076 2018-02-24 Marek Polacek <polacek@redhat.com>
3077
3078 PR c++/83692
3079 * constexpr.c (maybe_constant_init_1): New function.
3080 (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
3081 (cxx_constant_init): New function.
3082 * cp-tree.h (cxx_constant_init): Declare.
3083 * typeck2.c (store_init_value): Call cxx_constant_init instead of
3084 cxx_constant_value. Move the maybe_constant_init call under an 'else'.
3085
3086 2018-02-22 Jason Merrill <jason@redhat.com>
3087
3088 PR c++/70468 - ICE with constructor delegation via typedef.
3089 * pt.c (tsubst_initializer_list): Check for other mem-initializers
3090 with constructor delegation.
3091
3092 2018-02-22 Jason Merrill <jason@redhat.com>
3093
3094 PR c++/84424 - ICE with constexpr and __builtin_shuffle.
3095 * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
3096 VECTOR_TYPE.
3097
3098 2018-02-22 Marek Polacek <polacek@redhat.com>
3099
3100 PR c++/84493
3101 * parser.c (cp_parser_braced_list): Use require_open instead of
3102 consume_open.
3103
3104 2018-02-21 Jason Merrill <jason@redhat.com>
3105
3106 PR c++/84454 - ICE with pack expansion in signature.
3107 * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
3108
3109 2018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org>
3110
3111 * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
3112 IF_STMT.
3113
3114 2018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
3115
3116 PR c++/84446
3117 * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
3118 on error_mark_node.
3119
3120 2018-02-20 Jakub Jelinek <jakub@redhat.com>
3121
3122 PR c++/84445
3123 * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
3124 TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
3125
3126 PR c++/84449
3127 * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
3128 returns error_mark_node, return it immediately.
3129 (break_out_target_exprs): If cp_walk_tree with bot_manip returns
3130 error_mark_node, return error_mark_node.
3131
3132 PR c++/84455
3133 * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
3134 function_depth to avoid GC during finish_lambda_function.
3135
3136 2018-02-19 Jason Merrill <jason@redhat.com>
3137
3138 PR c++/84429 - ICE capturing VLA.
3139 * lambda.c (build_capture_proxy): Handle reference refs.
3140
3141 2018-02-19 Jakub Jelinek <jakub@redhat.com>
3142
3143 PR c++/84448
3144 * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
3145 either operand is error_mark_node, set current.lhs to that instead of
3146 creating a binary op with error_mark_node operands.
3147
3148 PR c++/84430
3149 * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
3150
3151 2018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
3152
3153 PR c++/84348
3154 * decl.c (grokdeclarator): Early return error_mark_node upon
3155 ill-formed friend declaration.
3156
3157 2018-02-16 Marek Polacek <polacek@redhat.com>
3158 Jakub Jelinek <jakub@redhat.com>
3159
3160 PR c++/84192
3161 * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
3162 set *jump_target to anything if jump_target is NULL.
3163
3164 2018-02-16 Jason Merrill <jason@redhat.com>
3165
3166 PR c++/84151 - unnecessary volatile load with static member.
3167 * call.c (build_new_method_call_1): Avoid loading from a volatile
3168 lvalue used as the object argument for a static member function.
3169
3170 PR c++/81853 - using-directive and constexpr.
3171 * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
3172
3173 PR c++/84420 - ICE with structured binding in lambda.
3174 * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
3175
3176 PR c++/83835 - C++17 error with constructor ctors.
3177 * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
3178
3179 PR c++/82664 - ICE with reference to function template parm.
3180 * pt.c (convert_nontype_argument_function): Avoid obfuscationg
3181 NOP_EXPRs.
3182
3183 PR c++/82764 - C++17 ICE with empty base
3184 * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
3185
3186 2018-02-16 Jason Merrill <jason@redhat.com>
3187
3188 PR c++/84421 - type-dependent if constexpr
3189 * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
3190
3191 2018-02-16 Nathan Sidwell <nathan@acm.org>
3192
3193 Deprecate -ffriend-injection.
3194 * decl.c (cxx_init_decl_processing): Emit warning on option.
3195 * name-lookup.c (do_pushdecl): Emit warning if we push a visible
3196 friend.
3197
3198 2018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
3199
3200 PR c++/82468
3201 * decl.c (check_special_function_return_type): Reject template
3202 template parameter in deduction guide.
3203
3204 2018-02-16 Nathan Sidwell <nathan@acm.org>
3205
3206 PR c++/84375
3207 * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
3208
3209 2018-02-15 Jason Merrill <jason@redhat.com>
3210
3211 PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
3212 * call.c (convert_like_real): Don't use the copy-list-initialization
3213 shortcut for ck_base.
3214
3215 PR c++/84045 - ICE with typedef and noexcept.
3216 * except.c (build_noexcept_spec): Use strip_typedefs_expr.
3217
3218 PR c++/84376 - ICE with omitted template arguments.
3219 * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
3220
3221 PR c++/84368 - wrong error with local variable in variadic lambda.
3222 * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
3223 local_specializations.
3224
3225 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
3226
3227 PR c++/84330
3228 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
3229 as first argument.
3230
3231 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
3232
3233 PR c++/84350
3234 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
3235 init, early return.
3236
3237 2018-02-14 Nathan Sidwell <nathan@acm.org>
3238
3239 * decl2.c (mark_vtable_entries): Set input_location to decl's.
3240 (c_parse_final_cleanups): Restore input_location after emitting
3241 vtables.
3242
3243 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
3244
3245 * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
3246 (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
3247 auto_deduction_context, tree, int): Add defaults.
3248 * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
3249 (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
3250 tsubst_flags_t argument.
3251 * init.c (build_new): Likewise.
3252
3253 2018-02-13 Jakub Jelinek <jakub@redhat.com>
3254
3255 PR c++/84364
3256 * typeck.c (check_return_expr): Don't emit -Weffc++ warning
3257 about return other than *this in assignment operators if
3258 retval is type dependent expression.
3259
3260 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com>
3261
3262 PR c++/84333
3263 * call.c (build_conditional_expr_1): Use cp_save_expr instead of
3264 save_expr for the G++ extension.
3265
3266 2018-02-13 Jason Merrill <jason@redhat.com>
3267
3268 PR c++/84080 - ICE with return type deduction and specialization.
3269 * pt.c (determine_specialization): Check uses_template_parms.
3270
3271 Fix more variadic capture issues.
3272 * pt.c (find_parameter_packs_r): Also look at explicit captures.
3273 (check_for_bare_parameter_packs): Check current_class_type for
3274 lambda context.
3275 (extract_locals_r): Handle seeing a full instantiation of a pack.
3276 (tsubst_pack_expansion): Likewise. Force lambda capture.
3277 * parser.c (cp_parser_lambda_introducer): Don't
3278 check_for_bare_parameter_packs.
3279
3280 PR c++/84338 - wrong variadic sizeof.
3281 * pt.c (argument_pack_select_arg): Like the macro, but look through
3282 a pack expansion.
3283 (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
3284 (extract_fnparm_pack): Do make_pack_expansion.
3285 (extract_locals_r): Do strip a pack expansion.
3286 * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
3287
3288 2018-02-12 Jakub Jelinek <jakub@redhat.com>
3289
3290 PR c++/84341
3291 * parser.c (cp_parser_binary_expression): Use build_min instead of
3292 build2_loc to build the no_toplevel_fold_p toplevel binary expression.
3293
3294 2018-02-12 Nathan Sidwell <nathan@acm.org>
3295
3296 PR c++/84263
3297 * parser.c (cp_parser_decltype): Push and pop
3298 deferring_access_checks. Reorganize to avoid goto.
3299
3300 2018-02-12 Richard Biener <rguenther@suse.de>
3301
3302 PR c++/84281
3303 * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
3304 uniform constructors and delay allocating them fully.
3305
3306 2018-02-09 Jason Merrill <jason@redhat.com>
3307
3308 PR c++/84036 - ICE with variadic capture.
3309 Handle variadic capture proxies more like non-variadic.
3310 * lambda.c (build_capture_proxy): Remove workaround.
3311 * pt.c (find_parameter_packs_r): The proxy is a pack.
3312 (instantiate_class_template_1): Remove dead lambda code.
3313 (extract_fnparm_pack): Don't make_pack_expansion.
3314 (extract_locals_r): Don't strip a pack expansion.
3315 (tsubst_pack_expansion): Handle proxy packs. Use
3316 PACK_EXPANSION_EXTRA_ARGS less.
3317 (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
3318 (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
3319 [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
3320 (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
3321 (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
3322
3323 2018-02-10 Jakub Jelinek <jakub@redhat.com>
3324
3325 PR sanitizer/83987
3326 * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
3327
3328 2018-02-09 Jason Merrill <jason@redhat.com>
3329
3330 PR c++/81917 - ICE with void_t and partial specialization.
3331 * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
3332 calling most_specialized_partial_spec.
3333
3334 2018-02-09 Nathan Sidwell <nathan@acm.org>
3335
3336 PR c/84293
3337 * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
3338 Pass expr location to strict_aliasing_warning.
3339
3340 2018-02-09 Jason Merrill <jason@redhat.com>
3341
3342 PR c++/84296 - ICE with qualified-id in template.
3343 PR c++/83714
3344 * pt.c (unknown_base_ref_p): New.
3345 (instantiation_dependent_scope_ref_p): Use it instead of
3346 any_dependent_bases_p.
3347
3348 2018-02-09 Marek Polacek <polacek@redhat.com>
3349 Jakub Jelinek <jakub@redhat.com>
3350
3351 PR c++/83659
3352 * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
3353 fold_indirect_ref_1, including poly_*int64. Verify first that
3354 tree_fits_poly_int64_p (op01). Formatting fixes.
3355
3356 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
3357
3358 * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
3359 * lambda.c (build_capture_proxy): Likewise.
3360 * search.c (field_access_p): Likewise.
3361 * semantics.c (omp_clause_decl, omp_privatize_field,
3362 finish_omp_clauses): Likewise.
3363
3364 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
3365
3366 PR c++/83806
3367 * typeck.c (decay_conversion): Use mark_rvalue_use for the special
3368 case of nullptr too.
3369
3370 2018-02-08 Nathan Sidwell <nathan@acm.org>
3371
3372 * class.c (finish_struct): Fix std:initializer_list diagnostic
3373 formatting.
3374
3375 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
3376
3377 PR c++/83204
3378 * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
3379
3380 2018-02-07 Jakub Jelinek <jakub@redhat.com>
3381
3382 PR c++/84082
3383 * parser.c (cp_parser_dot_deref_incomplete): New function.
3384 (cp_parser_postfix_dot_deref_expression): Use it.
3385
3386 2018-02-07 David Malcolm <dmalcolm@redhat.com>
3387
3388 PR c++/81610
3389 PR c++/80567
3390 * name-lookup.c (suggest_rid_p): New function.
3391 (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
3392 suggest_rid_p.
3393
3394 2018-02-07 Jason Merrill <jason@redhat.com>
3395
3396 PR c++/84182 - ICE with captured lambda
3397 PR c++/84181
3398 * pt.c (extract_locals_r, extract_local_specs): New.
3399 (tsubst_pack_expansion): Use them.
3400
3401 2018-02-07 Martin Liska <mliska@suse.cz>
3402
3403 PR c++/84059.
3404 * class.c (add_method): Append argument value.
3405 * cp-tree.h (maybe_version_functions): Add new argument.
3406 * decl.c (decls_match): Call it if a declaration does not
3407 have DECL_FUNCTION_VERSIONED.
3408 (maybe_version_functions): record argument is added.
3409
3410 2018-02-05 Marek Polacek <polacek@redhat.com>
3411
3412 * class.c: Remove unused global variables.
3413 (build_primary_vtable): Don't gather statistics.
3414 (print_class_statistics): Remove.
3415 * cp-tree.h (print_class_statistics): Remove.
3416 * tree.c (cxx_print_statistics): Don't call print_class_statistics.
3417
3418 2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
3419
3420 * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
3421 * constexpr.c (cx_check_missing_mem_inits): Likewise.
3422 * decl.c (next_initializable_field, find_decomp_class_base,
3423 cp_finish_decomp): Likewise.
3424 * typeck2.c (process_init_constructor_record): Likewise.
3425
3426 2018-02-02 Jason Merrill <jason@redhat.com>
3427
3428 PR c++/84181 - ICE with lambda parm in template argument.
3429 * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
3430
3431 2018-02-01 Jason Merrill <jason@redhat.com>
3432
3433 PR c++/84160 - ICE with nested variadic capture.
3434 * lambda.c (is_capture_proxy_with_ref): New.
3435 (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
3436 COMPONENT_REF.
3437 * expr.c (mark_use): Use is_capture_proxy_with_ref.
3438 * constexpr.c (potential_constant_expression_1): Likewise.
3439 * semantics.c (process_outer_var_ref): Likewise.
3440
3441 2018-02-01 Marek Polacek <polacek@redhat.com>
3442
3443 PR c++/84125
3444 * typeck.c (build_address): Relax the assert when
3445 processing_template_decl.
3446
3447 2018-02-01 Jason Merrill <jason@redhat.com>
3448
3449 PR c++/84126 - ICE with variadic generic lambda
3450 PR c++/84036
3451 PR c++/82249
3452 * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
3453 PACK_EXPANSION_EXTRA_ARGS.
3454
3455 2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
3456
3457 PR c++/83796
3458 * call.c (convert_like_real): If w're initializing from {} explicitly
3459 call abstract_virtuals_error_sfinae.
3460
3461 2018-01-31 Jason Merrill <jason@redhat.com>
3462 Jakub Jelinek <jakub@redhat.com>
3463
3464 PR c++/83993
3465 * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
3466 around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
3467 on ADDR_EXPR.
3468
3469 2018-01-31 Jakub Jelinek <jakub@redhat.com>
3470
3471 PR c++/83993
3472 * constexpr.c (diag_array_subscript): Emit different diagnostics
3473 if TYPE_DOMAIN (arraytype) is NULL.
3474 (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
3475 with NULL TYPE_DOMAIN use size_zero_node as nelts.
3476
3477 2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
3478
3479 PR c++/84092
3480 * semantics.c (finish_qualified_id_expr): When handling an
3481 UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
3482
3483 2018-01-31 Marek Polacek <polacek@redhat.com>
3484
3485 PR c++/84138
3486 * cp-gimplify.c (cp_fold): Check if X is an error node before
3487 calling useless_type_conversion_p.
3488
3489 2018-01-30 Jason Merrill <jason@redhat.com>
3490
3491 PR c++/84091 - ICE with local class in lambda in template.
3492 * decl2.c (determine_visibility): Look for outer containing template
3493 instantiation.
3494
3495 PR c++/84098 - ICE with lambda in template NSDMI.
3496 * pt.c (instantiate_class_template_1): Ignore more lambdas.
3497
3498 2018-01-29 Jason Merrill <jason@redhat.com>
3499
3500 PR c++/68810 - wrong location for reinterpret_cast error.
3501 * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
3502 !dofold.
3503
3504 2018-01-29 Marek Polacek <polacek@redhat.com>
3505
3506 PR c++/83996
3507 * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
3508 => fooarray[1] in offset_int.
3509
3510 2018-01-29 Jason Merrill <jason@redhat.com>
3511
3512 PR c++/83942 - wrong unused warning with static_cast.
3513 * cvt.c (ocp_convert): Call mark_rvalue_use.
3514
3515 2018-01-26 Jason Merrill <jason@redhat.com>
3516
3517 PR c++/83956 - wrong dtor error with anonymous union
3518 * method.c (walk_field_subobs): Variant members only affect
3519 deletedness.
3520 (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
3521
3522 PR c++/84036 - ICE with variadic capture.
3523 PR c++/82249
3524 * pt.c (tsubst_pack_expansion): When optimizing a simple
3525 substitution, pull a single pack expansion out of its pack.
3526
3527 PR c++/82514 - ICE with local class in generic lambda.
3528 * pt.c (regenerated_lambda_fn_p): Remove.
3529 (enclosing_instantiation_of): Don't use it.
3530 (tsubst_function_decl): Call enclosing_instantiation_of.
3531
3532 * pt.c (lookup_template_class_1): Add sanity check.
3533 * name-lookup.c (do_pushtag): Don't add closures to local_classes.
3534
3535 2018-01-25 Jakub Jelinek <jakub@redhat.com>
3536
3537 PR c++/84031
3538 * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore
3539 recursive calls that return ret.
3540 (cp_finish_decomp): Ignore unnamed bitfields.
3541
3542 2018-01-23 Jason Merrill <jason@redhat.com>
3543
3544 PR c++/82249 - wrong mismatched pack length error.
3545 * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
3546 unsubstituted function parameter pack.
3547
3548 2018-01-23 Paolo Carlini <paolo.carlini@oracle.com>
3549
3550 PR c++/83921
3551 * decl.c (check_for_uninitialized_const_var): Not static; add
3552 bool and tsubst_flags_t parameters; adjust to be used both in
3553 constexpr context and not.
3554 * constexpr.c (potential_constant_expression_1): Use the above.
3555 * cp-tree.h (check_for_uninitialized_const_var): Declare.
3556
3557 2018-01-23 Jason Merrill <jason@redhat.com>
3558
3559 PR c++/83947 - ICE with auto declarations.
3560 * pt.c (do_auto_deduction): Don't deduce from an auto decl.
3561 * decl.c (undeduced_auto_decl): Limit to vars and fns.
3562
3563 2018-01-23 David Malcolm <dmalcolm@redhat.com>
3564
3565 PR c++/83974
3566 * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
3567 for pointer to member function types.
3568
3569 2018-01-23 Jakub Jelinek <jakub@redhat.com>
3570
3571 PR sanitizer/83987
3572 * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
3573 DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
3574
3575 2018-01-23 Nathan Sidwell <nathan@acm.org>
3576
3577 PR c++/83988
3578 * pt.c (tsubst_baselink): Remove optype assert.
3579 * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
3580
3581 2018-01-23 Jakub Jelinek <jakub@redhat.com>
3582
3583 PR c++/83958
3584 * decl.c (cp_finish_decomp): Diagnose if reference structure binding
3585 refers to incomplete type.
3586
3587 2018-01-23 Nathan Sidwell <nathan@acm.org>
3588
3589 Deprecate ARM-era for scope handling
3590 * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
3591 (cxx_init_decl_processing): Deprecate flag_new_for_scope being
3592 cleared.
3593 * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
3594 cleanup handling.
3595 * semantics.c (begin_for_scope): Flag_new_for_scope is
3596 boolean-like.
3597 (finish_for_stmt, begin_range_for_stmt): Likewise.
3598
3599 2018-01-22 Jason Merrill <jason@redhat.com>
3600
3601 PR c++/83720
3602 * decl2.c (determine_visibility): Fix template_decl handling
3603 instead of blocking it.
3604
3605 PR c++/83720 - ICE with lambda and LTO.
3606 * decl2.c (determine_visibility): Clear template_decl for
3607 function-scope decls. Propagate anonymous linkage from containing
3608 function.
3609
3610 2018-01-22 Marek Polacek <polacek@redhat.com>
3611
3612 PR c++/81933
3613 * typeck2.c (split_nonconstant_init_1): Return false if we didn't
3614 split out anything.
3615
3616 2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
3617
3618 PR c++/83895
3619 * decl.c (grokdeclarator): Don't diagnose extra parens
3620 on typedefs.
3621
3622 2018-01-19 Jakub Jelinek <jakub@redhat.com>
3623
3624 PR c++/81167
3625 * call.c (joust): Use TREE_TYPE (source) if source is
3626 a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
3627
3628 PR c++/83919
3629 * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
3630 for direct enum init.
3631 * decl.c (reshape_init): Likewise.
3632
3633 2018-01-19 Marek Polacek <polacek@redhat.com>
3634
3635 * constexpr.c (fold_simple): Simplify.
3636
3637 2018-01-18 Jason Merrill <jason@redhat.com>
3638
3639 PR c++/83714
3640 * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
3641 * pt.c (instantiation_dependent_scope_ref_p): True if
3642 any_dependent_bases_p.
3643
3644 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
3645
3646 * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
3647 vs DECL_NONTRIVIALLY_INITIALIZED_P).
3648
3649 2018-01-18 Jason Merrill <jason@redhat.com>
3650
3651 PR c++/82461 - constexpr list-initialized member
3652 * constexpr.c (potential_constant_expression_1): Check
3653 TARGET_EXPR_DIRECT_INIT_P.
3654
3655 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
3656
3657 PR c++/81013
3658 * decl.c (xref_basetypes): Early return upon error about derived
3659 union.
3660
3661 2018-01-18 Nathan Sidwell <nathan@acm.org>
3662
3663 PR c++/83160
3664 * cp-tree.h (mark_use): Declare.
3665 * expr.c (mark_use): Make extern.
3666 * call.c (direct_reference_binding): Set inner conv's
3667 rvaluedness_matches_p, if it is an identity.
3668 (convert_like_real): Mark lvalue or rvalue use for identity as
3669 rvaledness_matches_p demands.
3670
3671 2018-01-18 Jakub Jelinek <jakub@redhat.com>
3672
3673 PR c++/83824
3674 * parser.c (attr_chainon): New function.
3675 (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
3676 cp_parser_namespace_definition, cp_parser_init_declarator,
3677 cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
3678 cp_parser_gnu_attributes_opt): Use it.
3679 (cp_parser_member_declaration, cp_parser_objc_class_ivars,
3680 cp_parser_objc_struct_declaration): Likewise. Don't reset
3681 prefix_attributes if attributes is error_mark_node.
3682
3683 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
3684
3685 PR c++/78344
3686 * decl.c (grokdeclarator): Do not append the error_mark_node
3687 due to an erroneous optional attribute-specifier-seq.
3688
3689 2018-01-17 Jakub Jelinek <jakub@redhat.com>
3690
3691 PR c++/83897
3692 * cp-gimplify.c (cp_maybe_instrument_return): Handle
3693 CLEANUP_POINT_EXPR.
3694
3695 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
3696
3697 PR c++/81054
3698 * constexpr.c (ensure_literal_type_for_constexpr_object): Return
3699 error_mark_node when we give an error.
3700 * decl.c (cp_finish_decl): Use the latter.
3701
3702 2018-01-17 Nathan Sidwell <nathan@acm.org>
3703
3704 PR c++/83287
3705 * init.c (build_raw_new_expr): Scan list for lookups to keep.
3706
3707 2018-01-17 David Malcolm <dmalcolm@redhat.com>
3708
3709 PR c++/83814
3710 * expr.c (fold_for_warn): Move from c-common.c, reducing to just
3711 the C++ part. If processing a template, call
3712 fold_non_dependent_expr rather than fully folding.
3713
3714 2018-01-17 Jason Merrill <jason@redhat.com>
3715
3716 PR c++/81067 - redundant NULL warning.
3717 * call.c (convert_like_real): Restore null_node handling.
3718
3719 2018-01-17 Jason Merrill <jason@redhat.com>
3720
3721 PR c++/81843 - ICE with variadic member template.
3722 PR c++/72801
3723 * pt.c (unify_pack_expansion): Don't try to deduce enclosing
3724 template args.
3725
3726 2018-01-17 David Malcolm <dmalcolm@redhat.com>
3727
3728 PR c++/83799
3729 * pt.c (type_dependent_expression_p): Strip any location wrapper
3730 before testing tree codes.
3731 (selftest::test_type_dependent_expression_p): New function.
3732 (selftest::cp_pt_c_tests): Call it.
3733
3734 2018-01-17 Nathan Sidwell <nathan@acm.org>
3735
3736 PR c++/83739
3737 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
3738 this not a final instantiation.
3739
3740 2018-01-16 Jason Merrill <jason@redhat.com>
3741
3742 PR c++/83714 - ICE checking return in template.
3743 * typeck.c (check_return_expr): Call build_non_dependent_expr.
3744
3745 2018-01-16 Jakub Jelinek <jakub@redhat.com>
3746
3747 PR c++/83817
3748 * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
3749 is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
3750 instead of CALL_FROM_THUNK_P.
3751
3752 PR c++/83825
3753 * name-lookup.c (member_vec_dedup): Return early if len is 0.
3754 (resort_type_member_vec, set_class_bindings,
3755 insert_late_enum_def_bindings): Use vec qsort method instead of
3756 calling qsort directly.
3757
3758 2018-01-15 Martin Sebor <msebor@redhat.com>
3759
3760 PR c++/83588
3761 * class.c (find_flexarrays): Make a record of multiple flexible array
3762 members.
3763
3764 2018-01-12 Jason Merrill <jason@redhat.com>
3765
3766 PR c++/83186 - ICE with static_cast of list-initialized temporary.
3767 * typeck.c (build_static_cast): Use build_non_dependent_expr.
3768
3769 2018-01-12 Nathan Sidwell <nathan@acm.org>
3770
3771 * cp-tree.h (mark_rvalue_use): Add parm name.
3772 * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
3773 mark_rvalue_use.
3774 * call.c (convert_like_real): Fix formatting.
3775
3776 2018-01-11 Jason Merrill <jason@redhat.com>
3777
3778 PR c++/82728 - wrong -Wunused-but-set-variable
3779 PR c++/82799
3780 PR c++/83690
3781 * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
3782 * decl.c (case_conversion): Likewise.
3783 * semantics.c (finish_static_assert): Call
3784 perform_implicit_conversion_flags.
3785
3786 2018-01-11 Nathan Sidwell <nathan@acm.org>
3787
3788 * method.c (enum mangling_flags): Delete long-dead enum.
3789
3790 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
3791
3792 * parser.c (cp_parser_std_attribute_spec): When
3793 token_pair::require_open / require_close return false simply
3794 return error_mark_node, avoid duplicate cp_parser_error about
3795 expected '(' / ')', respectively.
3796
3797 2018-01-10 David Malcolm <dmalcolm@redhat.com>
3798
3799 PR c++/43486
3800 * call.c (null_ptr_cst_p): Strip location wrappers when
3801 converting from '0' to a pointer type in C++11 onwards.
3802 (conversion_null_warnings): Replace comparison with null_node with
3803 call to null_node_p.
3804 (build_over_call): Likewise.
3805 * cp-gimplify.c (cp_fold): Remove the early bailout when
3806 processing_template_decl.
3807 * cp-lang.c (selftest::run_cp_tests): Call
3808 selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
3809 * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
3810 (selftest::run_cp_tests): Move decl to bottom of file.
3811 (null_node_p): New inline function.
3812 (selftest::cp_pt_c_tests): New decl.
3813 (selftest::cp_tree_c_tests): New decl.
3814 * cvt.c (build_expr_type_conversion): Replace comparison with
3815 null_node with call to null_node_p.
3816 * error.c (args_to_string): Likewise.
3817 * except.c (build_throw): Likewise.
3818 * mangle.c (write_expression): Skip location wrapper nodes.
3819 * parser.c (literal_integer_zerop): New function.
3820 (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
3821 the result for RID_TYPEID. Pass true for new "wrap_locations_p"
3822 param of cp_parser_parenthesized_expression_list. When calling
3823 warn_for_memset, replace integer_zerop calls with
3824 literal_integer_zerop, eliminating the double logical negation
3825 cast to bool. Eliminate the special-casing for CONST_DECL in
3826 favor of the fold_for_warn within warn_for_memset.
3827 (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
3828 param, defaulting to false. Convert "expr" to a cp_expr, and call
3829 maybe_add_location_wrapper on it when wrap_locations_p is true.
3830 (cp_parser_unary_expression): Call maybe_add_location_wrapper on
3831 the result for RID_ALIGNOF and RID_SIZEOF.
3832 (cp_parser_builtin_offsetof): Likewise.
3833 * pt.c: Include "selftest.h".
3834 (tsubst_copy): Handle location wrappers.
3835 (tsubst_copy_and_build): Likewise.
3836 (build_non_dependent_expr): Likewise.
3837 (selftest::test_build_non_dependent_expr): New function.
3838 (selftest::cp_pt_c_tests): New function.
3839 * tree.c: Include "selftest.h".
3840 (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
3841 (selftest::test_lvalue_kind): New function.
3842 (selftest::cp_tree_c_tests): New function.
3843 * typeck.c (string_conv_p): Strip any location wrapper from "exp".
3844 (cp_build_binary_op): Replace comparison with null_node with call
3845 to null_node_p.
3846 (build_address): Use location of operand when building address
3847 expression.
3848
3849 2018-01-10 Marek Polacek <polacek@redhat.com>
3850
3851 PR c++/82541
3852 * call.c (build_conditional_expr_1): Check complain before warning.
3853 * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
3854 -Wduplicated-branches.
3855
3856 2018-01-10 Jakub Jelinek <jakub@redhat.com>
3857
3858 PR c++/81327
3859 * call.c (maybe_warn_class_memaccess): Add forward declaration.
3860 Change last argument from tree * to const vec<tree, va_gc> *, adjust
3861 args uses and check number of operands too. Don't strip away any
3862 nops. Use maybe_constant_value when looking for INTEGER_CST args.
3863 Deal with src argument not having pointer type. Check
3864 tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless
3865 test.
3866 (build_over_call): Call maybe_warn_class_memaccess here on the
3867 original arguments.
3868 (build_cxx_call): Rather than here on converted arguments.
3869
3870 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
3871
3872 PR c++/81055
3873 * init.c (build_vec_init): Avoid building an INIT_EXPR with
3874 error_mark_node as second argument.
3875
3876 2018-01-09 Jakub Jelinek <jakub@redhat.com>
3877
3878 PR c++/83734
3879 * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
3880 in STATEMENT_LIST. Remove unneeded assert.
3881
3882 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
3883 Alan Hayward <alan.hayward@arm.com>
3884 David Sherwood <david.sherwood@arm.com>
3885
3886 * constexpr.c (cxx_eval_array_reference): Handle polynomial
3887 VECTOR_CST_NELTS.
3888 (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
3889 * call.c (build_conditional_expr_1): Likewise.
3890 * decl.c (cp_finish_decomp): Likewise.
3891 * mangle.c (write_type): Likewise.
3892 * typeck.c (structural_comptypes): Likewise.
3893 (cp_build_binary_op): Likewise.
3894 * typeck2.c (process_init_constructor_array): Likewise.
3895
3896 2018-01-03 Jakub Jelinek <jakub@redhat.com>
3897
3898 PR c++/83555
3899 * typeck.c (build_static_cast_1): For static casts to reference types,
3900 call build_base_path with flag_delete_null_pointer_checks as nonnull
3901 instead of always false. When -fsanitize=null, call
3902 ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
3903 * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
3904 call if the first argument is INTEGER_CST with REFERENCE_TYPE.
3905
3906 2018-01-03 Nathan Sidwell <nathan@acm.org>
3907
3908 PR c++/83667
3909 * method.c (make_alias_for): Copy DECL_CONTEXT.
3910
3911 2018-01-03 Marek Polacek <polacek@redhat.com>
3912
3913 PR c++/83592
3914 * decl.c (grokdeclarator): Don't warn about MVP in typename context.
3915
3916 2018-01-03 Jakub Jelinek <jakub@redhat.com>
3917
3918 PR preprocessor/83602
3919 * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
3920 for builtin macros.
3921
3922 PR c++/83634
3923 * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
3924 error_mark_node, return error_mark_node.
3925
3926 Update copyright years.
3927
3928 2018-01-02 Jakub Jelinek <jakub@redhat.com>
3929
3930 PR c++/83556
3931 * tree.c (replace_placeholders_r): Pass NULL as last argument to
3932 cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and
3933 non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
3934 to false and return.
3935 (replace_placeholders): Pass NULL instead of &pset as last argument
3936 to cp_walk_tree.
3937
3938 2018-01-02 Nathan Sidwell <nathan@acm.org>
3939
3940 * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
3941 lval var.
3942 \f
3943 Copyright (C) 2018 Free Software Foundation, Inc.
3944
3945 Copying and distribution of this file, with or without modification,
3946 are permitted in any medium without royalty provided the copyright
3947 notice and this notice are preserved.