]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/cp/ChangeLog
gcc/ChangeLog:
[thirdparty/gcc.git] / gcc / cp / ChangeLog
1 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
2
3 * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
4 * cp-gimplify.c (cp_fold): Likewise.
5
6 2018-06-15 Jason Merrill <jason@redhat.com>
7
8 PR c++/86147 - wrong capture for template argument.
9 * expr.c (mark_use): Look through NOP_EXPR.
10
11 * name-lookup.c (do_pushtag): Don't look through complete types, but
12 don't add to them either. Get context from current_binding_level.
13 * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
14
15 * decl.c (start_enum): Do compare dependent underlying type.
16
17 PR c++/82882 - ICE with lambda in template default argument.
18 * lambda.c (record_null_lambda_scope): New.
19 * pt.c (tsubst_lambda_expr): Use it.
20 * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
21 function that isn't open.
22
23 * tree.c (maybe_warn_parm_abi): Inform the location of the class.
24
25 2018-06-14 Marek Polacek <polacek@redhat.com>
26
27 PR c++/86063
28 * decl2.c (cp_check_const_attributes): Skip trees that are not
29 TREE_LISTs.
30
31 2018-06-14 Jakub Jelinek <jakub@redhat.com>
32
33 P0624R2 - Default constructible and assignable stateless lambdas
34 * method.c (synthesized_method_walk): For C++2a don't mark
35 sfk_constructor or sfk_copy_assignment as deleted if lambda has
36 no lambda-captures.
37
38 2018-06-14 Paolo Carlini <paolo.carlini@oracle.com>
39
40 * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
41 OPT_Wshadow warning_at.
42 (grokfndecl): Consistently use the location_t argument in
43 literal operator diagnostic messages.
44 (grokdeclarator): Use declspecs->locations[ds_storage_class]
45 in error_at call.
46 * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
47 in permerror call.
48
49 2018-06-13 Jason Merrill <jason@redhat.com>
50
51 PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
52 * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
53 constructors.
54
55 PR c++/86094 - wrong code with defaulted move ctor.
56 * class.c (classtype_has_non_deleted_move_ctor): New.
57 * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
58 Handle v12 breakage.
59
60 2018-06-12 Jason Merrill <jason@redhat.com>
61
62 PR c++/86098 - ICE with template placeholder for TTP.
63 * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
64 CLASS_PLACEHOLDER_TEMPLATE.
65
66 2018-06-12 Paolo Carlini <paolo.carlini@oracle.com>
67
68 * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
69 parameter and adjust error_at calls.
70 * decl.c (grok_op_properties): Adjust calls.
71 * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
72
73 2018-06-12 Marek Polacek <polacek@redhat.com>
74
75 Core issue 1331 - const mismatch with defaulted copy constructor
76 * class.c (check_bases_and_members): When checking a defaulted
77 function, mark it as deleted rather than giving an error.
78
79 2018-06-11 Jason Merrill <jason@redhat.com>
80
81 PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
82 * class.c (maybe_warn_about_overly_private_class): Handle inherited
83 constructors.
84
85 PR c++/85963 - -Wunused-but-set with ?: in template.
86 * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
87
88 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com>
89
90 * decl.c (grok_op_properties): Consistently use the location
91 of the decl; remove special casing of POSTINCREMENT_EXPR and
92 POSTDECREMENT_EXPR wrt default arguments.
93
94 2018-06-05 Jason Merrill <jason@redhat.com>
95
96 * constexpr.c (cxx_eval_binary_expression): Special case comparison
97 of pointers to members of the same union.
98
99 2018-06-11 Jason Merrill <jason@redhat.com>
100
101 PR c++/86094 - wrong code with defaulted move ctor.
102 * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
103
104 2018-06-10 Paolo Carlini <paolo.carlini@oracle.com>
105
106 * decl.c (grokfndecl): Use the location_t argument in two more places.
107
108 2018-06-06 Marek Polacek <polacek@redhat.com>
109
110 PR c++/85977
111 * pt.c (unify): If ELTTYPE has no deducible template parms, skip
112 deduction from the list elements.
113 (type_unification_real): Check convertibility of list elements.
114
115 2018-06-06 Jason Merrill <jason@redhat.com>
116
117 PR c++/86060 - ICE on range for with -std=c++98.
118 * parser.c (cp_parser_init_statement): Don't clobber *decl after
119 pedwarn.
120
121 PR c++/85710 - ICE with -Wmemset-elt-size.
122 * semantics.c (finish_call_expr): Call warn_for_memset here.
123 * parser.c (cp_parser_postfix_expression): Not here.
124 (literal_integer_zerop): No longer static.
125 * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
126
127 2018-06-05 Marek Polacek <polacek@redhat.com>
128
129 PR c++/85976
130 * tree.c (cp_tree_equal): Handle USING_DECL.
131
132 2018-06-05 Jason Merrill <jason@redhat.com>
133
134 PR c++/85731 - wrong error with qualified-id in template.
135 * semantics.c (finish_qualified_id_expr): build_qualified_name
136 for unbound names in the current class.
137
138 2018-06-04 Jason Merrill <jason@redhat.com>
139
140 PR c++/61806 - missed SFINAE with partial specialization.
141 * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
142 parameter to constructor.
143 * pt.c (instantiate_class_template_1): Enable access checking
144 before call to most_specialized_partial_spec.
145
146 PR c++/85765 - SFINAE and non-type default template arg.
147 * pt.c (type_unification_real): Do full semantic processing if
148 substituting a partial args list replaces all template parms.
149
150 2018-06-03 Jason Merrill <jason@redhat.com>
151
152 PR c++/85739 - ICE with pointer to member template parm.
153 * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
154
155 2018-06-02 Jason Merrill <jason@redhat.com>
156
157 PR c++/85761 - ICE with ill-formed use of const outer variable.
158 * expr.c (mark_use): Handle location wrappers.
159
160 2018-06-01 Jason Merrill <jason@redhat.com>
161
162 PR c++/85764 - bogus 'this' not captured error.
163 * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
164 (nonlambda_method_basetype): Handle NSDMI.
165
166 CWG 1581: When are constexpr member functions defined?
167 * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
168 (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
169
170 PR c++/58281 - explicit instantiation of constexpr
171 * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
172
173 * pt.c (instantiate_decl): Any defaulted function is defined.
174
175 2018-05-30 Jonathan Wakely <jwakely@redhat.com>
176
177 PR c++/77777
178 * call.c (resolve_args): Use location of expression, not current input
179 location.
180
181 2018-05-30 Ville Voutilainen <ville.voutilainen@gmail.com>
182
183 Do not warn about zero-as-null when NULL is used.
184 * call.c (conversion_null_warnings): Check for pointer
185 types converted from zero constants.
186 (convert_like_real): Add a warning sentinel at the end.
187 * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
188 check null_node_p.
189
190 2018-05-30 Jason Merrill <jason@redhat.com>
191
192 PR c++/85807 - ICE with call in template NSDMI.
193 * init.c (get_nsdmi): Use push_to/pop_from_top_level.
194 * tree.c (bot_manip): Don't set_flags_from_callee in a template.
195
196 PR c++/85873 - constant initializer_list array not in .rodata.
197 * tree.c (build_target_expr): Set TREE_READONLY.
198 * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
199
200 * parser.c (cp_parser_check_condition_declarator): Handle
201 cp_error_declarator.
202
203 2018-05-30 Jonathan Wakely <jwakely@redhat.com>
204
205 * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
206 of using it in dead store.
207
208 2018-05-29 Jason Merrill <jason@redhat.com>
209
210 PR c++/67445 - returning temporary initializer_list.
211 PR c++/67711 - assigning from temporary initializer_list.
212 PR c++/48562 - new initializer_list.
213 * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
214 about returning local initializer_list.
215 * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
216 * call.c (build_over_call): Warn about assignment from temporary
217 init_list.
218 * init.c (build_new_1): Warn about 'new std::initializer_list'.
219 (find_list_begin, maybe_warn_list_ctor): New.
220 (perform_member_init): Use maybe_warn_list_ctor.
221
222 2018-05-29 Marek Polacek <polacek@redhat.com>
223
224 PR c++/85883
225 * init.c (build_new): Handle deducing a class with new
226 with more than one argument.
227
228 2018-05-29 Jakub Jelinek <jakub@redhat.com>
229
230 PR c++/85952
231 * init.c (build_aggr_init): For structured binding initialized from
232 array call mark_rvalue_use on the initializer.
233
234 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
235
236 * decl2.c (start_static_storage_duration_function): Use
237 splay_tree_delete_pointers.
238
239 2018-05-25 Jason Merrill <jason@redhat.com>
240
241 PR c++/85815 - reference to member of enclosing template.
242 * search.c (lookup_base): Use currently_open_class.
243 (lookup_member): Use it regardless of -fconcepts.
244 * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
245
246 CWG 616, 1213 - value category of subobject references.
247 * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
248
249 2018-05-24 Jason Merrill <jason@redhat.com>
250
251 PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
252 * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
253 generic lambda.
254
255 2018-05-24 Ville Voutilainen <ville.voutilainen@gmail.com>
256
257 Pedwarn on a non-standard position of a C++ attribute.
258 * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
259 after the namespace name.
260
261 2018-05-24 Paolo Carlini <paolo.carlini@oracle.com>
262
263 * cp-tree.h (INDIRECT_TYPE_P): New.
264 * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
265 joust): Use it instead of POINTER_TYPE_P.
266 * class.c (update_vtable_entry_for_fn, find_flexarrays,
267 * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
268 * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
269 * cxx_eval_increment_expression, potential_constant_expression_1):
270 Likewise.
271 * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
272 * cp-objcp-common.c (cxx_get_alias_set): Likewise.
273 * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
274 cp_ubsan_maybe_instrument_downcast): Likewise.
275 * cvt.c (cp_convert_to_pointer, ocp_convert,
276 cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
277 * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
278 pp_cxx_offsetof_expression_1): Likewise.
279 * decl.c (grokparms, static_fn_type): Likewise.
280 * decl2.c (grokbitfield): Likewise.
281 * error.c (dump_expr): Likewise.
282 * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
283 * init.c (warn_placement_new_too_small): Likewise.
284 * lambda.c (build_capture_proxy, add_capture): Likewise.
285 * parser.c (cp_parser_omp_for_loop): Likewise.
286 * pt.c (convert_nontype_argument, fn_type_unification,
287 uses_deducible_template_parms, check_cv_quals_for_unify,
288 dependent_type_p_r): Likewise.
289 * search.c (check_final_overrider): Likewise.
290 * semantics.c (handle_omp_array_sections, finish_omp_clauses,
291 finish_omp_for): Likewise.
292 * tree.c (cp_build_qualified_type_real): Likewise.
293 * typeck.c (build_class_member_access_expr,
294 finish_class_member_access_expr, build_x_indirect_ref,
295 cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
296 Likewise.
297
298 2018-05-24 Jason Merrill <jason@redhat.com>
299
300 PR c++/85864 - literal template and default template arg.
301 * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
302
303 2018-05-24 Marek Polacek <polacek@redhat.com>
304
305 PR c++/85847
306 * init.c (build_new_1): Use fold_non_dependent_expr. Use a dedicated
307 variable for its result. Fix a condition.
308 (build_new): Use fold_non_dependent_expr. Tweak a condition.
309
310 2018-05-23 Jason Merrill <jason@redhat.com>
311
312 Fix cast to rvalue reference from prvalue.
313 * cvt.c (diagnose_ref_binding): Handle rvalue reference.
314 * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
315 non-class type. Handle xvalue argument.
316 * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
317 rvalue reference.
318 * semantics.c (finish_compound_literal): Do direct-initialization,
319 not cast, to initialize a reference.
320
321 CWG 616, 1213 - value category of subobject references.
322 * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
323 an xvalue.
324 * typeck2.c (build_m_component_ref): Likewise.
325 * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
326 distinction between temporary and xvalue.
327
328 2018-05-23 Marek Polacek <polacek@redhat.com>
329
330 Implement P0614R1, Range-based for statements with initializer.
331 * parser.c (cp_parser_range_based_for_with_init_p): New.
332 (cp_parser_init_statement): Use it. Parse the optional init-statement
333 for a range-based for loop.
334 (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
335
336 2018-05-22 Jason Merrill <jason@redhat.com>
337
338 PR c++/81420 - not extending temporary lifetime.
339 * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
340 * class.c (build_base_path): Avoid redundant move of an rvalue.
341
342 PR c++/85866 - error with .* in default template arg.
343 * pt.c (tsubst_copy_and_build): Handle partial instantiation.
344
345 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
346
347 * parser.c (cp_parser_parameter_declaration_list): Remove
348 bool* parameter.
349 (cp_parser_parameter_declaration_clause): Adjust.
350 (cp_parser_cache_defarg): Likewise.
351
352 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com>
353
354 PR c++/84588
355 * parser.c (cp_parser_maybe_commit_to_declaration,
356 cp_parser_check_condition_declarator): New.
357 (cp_parser_simple_declaration): Use the first above.
358 (cp_parser_condition): Use both the above; enforce
359 [stmt.stmt]/2 about the declarator not specifying
360 a function or an array; improve error-recovery.
361
362 2018-05-20 Jason Merrill <jason@redhat.com>
363
364 PR libstdc++/85843 - warning in logic_error copy constructor.
365 * class.c (type_has_user_nondefault_constructor): Check for a
366 user-provided ctor, not user-declared.
367
368 2018-05-19 Jason Merrill <jason@redhat.com>
369
370 * pt.c (tsubst_pack_expansion): Sorry rather than abort
371 on __integer_pack as subexpression of pattern.
372
373 2018-05-18 Jason Merrill <jason@redhat.com>
374
375 PR c++/58407 - deprecated implicit copy ops.
376 * call.c (build_over_call): Warn about deprecated trivial fns.
377 * class.c (classtype_has_user_copy_or_dtor): New.
378 (type_build_ctor_call): Check TREE_DEPRECATED.
379 (type_build_dtor_call): Likewise.
380 * decl2.c (cp_warn_deprecated_use): Move from tree.c.
381 Add checks. Return bool. Handle -Wdeprecated-copy.
382 (mark_used): Use it.
383 * decl.c (grokdeclarator): Remove redundant checks.
384 * typeck2.c (build_functional_cast): Likewise.
385 * method.c (lazily_declare_fn): Mark deprecated copy ops.
386 * init.c (build_aggr_init): Only set TREE_USED if there are
387 side-effects.
388
389 2018-05-18 Cesar Philippidis <cesar@codesourcery.com>
390
391 PR c++/85782
392 * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
393 OACC_LOOPs.
394
395 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
396
397 * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
398 (potential_constant_expression_1): Likewise.
399
400 2018-05-16 Marek Polacek <polacek@redhat.com>
401
402 PR c++/85363
403 * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
404 * tree.c (bot_manip): Call set_flags_from_callee for
405 AGGR_INIT_EXPRs too.
406
407 2018-05-15 Jason Merrill <jason@redhat.com>
408
409 * cp-tree.h (cp_expr): Remove copy constructor.
410 * mangle.c (struct releasing_vec): Declare copy constructor.
411
412 * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
413
414 PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
415 * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
416 is a throw-expression.
417
418 2018-05-15 Paolo Carlini <paolo.carlini@oracle.com>
419
420 * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
421 (FOR_EACH_CLONE): Update.
422 * decl.c (grokdeclarator): Use it.
423 * decl2.c (vague_linkage_p): Likewise.
424 * mangle.c (mangle_decl): Likewise.
425 * method.c (lazily_declare_fn): Likewise.
426 * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
427 * repo.c (repo_emit_p): Likewise.
428 * tree.c (decl_linkage): Likewise.
429
430 2018-05-14 Jason Merrill <jason@redhat.com>
431
432 Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
433 * tree.c (build_cp_fntype_variant): New.
434 (build_ref_qualified_type, build_exception_variant)
435 (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
436 (cxx_type_hash_eq, cp_check_qualified_type): Check
437 TYPE_HAS_LATE_RETURN_TYPE.
438 (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
439 (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
440 * class.c (build_clone): Use cxx_copy_lang_qualifiers.
441 (adjust_clone_args): Likewise.
442 * decl.c (grokfndecl): Add late_return_type_p parameter. Use
443 build_cp_fntype_variant.
444 (grokdeclarator): Pass late_return_type_p to grokfndecl.
445 (check_function_type): Use cxx_copy_lang_qualifiers.
446 (static_fn_type): Use cxx_copy_lang_qualifiers.
447 * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
448 (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
449 (change_return_type): Use cxx_copy_lang_qualifiers.
450 * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
451 * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
452 return type on the declarator like a normal trailing return type.
453 * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
454 (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
455 * typeck.c (merge_types): Use build_cp_fntype_variant.
456
457 2018-05-14 Paolo Carlini <paolo.carlini@oracle.com>
458
459 * cp-tree.h (TYPE_REF_P): New.
460 (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
461 * call.c (build_list_conv, build_aggr_conv, standard_conversion,
462 direct_reference_binding, reference_binding, implicit_conversion,
463 add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
464 build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
465 build_over_call, perform_implicit_conversion_flags,
466 extend_ref_init_temps, type_has_extended_temps): Use it.
467 * class.c (one_inheriting_sig, check_field_decls,
468 check_bases_and_members, find_flexarrays, finish_struct,
469 fixed_type_or_null): Likewise.
470 * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
471 non_const_var_error, cxx_eval_constant_expression,
472 potential_constant_expression_1): Likewise.
473 * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
474 cp_genericize_r, cxx_omp_privatize_by_reference,
475 cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
476 cp_fold_maybe_rvalue): Likewise.
477 * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
478 * cvt.c (build_up_reference, convert_to_reference,
479 convert_from_reference, convert_to_void, noexcept_conv_p,
480 fnptr_conv_p): Likewise.
481 * decl.c (poplevel, check_for_uninitialized_const_var,
482 check_initializer, initialize_local_var, cp_finish_decl,
483 get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
484 move_signature_fn_p, grok_op_properties, finish_function): Likewise.
485 * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
486 decl_maybe_constant_var_p): Likewise.
487 * error.c (dump_type_prefix, dump_expr): Likewise.
488 * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
489 is_admissible_throw_operand_or_catch_parameter): Likewise.
490 * expr.c (mark_use): Likewise.
491 * init.c (build_zero_init_1, build_value_init_noctor,
492 perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
493 build_new, build_delete): Likewise.
494 * lambda.c (build_lambda_object): Likewise.
495 * mangle.c (write_expression, write_template_arg): Likewise.
496 * method.c (forward_parm, do_build_copy_constructor,
497 do_build_copy_assign, build_stub_object, constructible_expr,
498 walk_field_subobs): Likewise.
499 * parser.c (cp_parser_omp_for_loop_init,
500 cp_parser_omp_declare_reduction_exprs,
501 cp_parser_omp_declare_reduction): Likewise.
502 * pt.c (convert_nontype_argument_function, convert_nontype_argument,
503 convert_template_argument, tsubst_pack_expansion,
504 tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
505 maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
506 more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
507 value_dependent_expression_p, build_deduction_guide): Likewise.
508 * semantics.c (finish_handler_parms, finish_non_static_data_member,
509 finish_compound_literal, omp_privatize_field,
510 handle_omp_array_sections_1, handle_omp_array_sections,
511 cp_check_omp_declare_reduction, finish_omp_reduction_clause,
512 finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
513 finish_omp_clauses, finish_decltype_type, capture_decltype,
514 finish_builtin_launder): Likewise.
515 * tree.c (lvalue_kind, cp_build_reference_type, move,
516 cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
517 * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
518 cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
519 cp_build_addr_expr_1, maybe_warn_about_useless_cast,
520 build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
521 build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
522 convert_for_initialization,
523 maybe_warn_about_returning_address_of_local, check_return_expr,
524 cp_type_quals, casts_away_constness, non_reference): Likewise.
525 * typeck2.c (cxx_readonly_error, store_init_value,
526 process_init_constructor_record, build_x_arrow, build_functional_cast,
527 add_exception_specifier): Likewise.
528
529 2018-05-14 Jason Merrill <jason@redhat.com>
530
531 * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
532 (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
533
534 2018-05-11 Jakub Jelinek <jakub@redhat.com>
535
536 PR c/85696
537 * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
538 * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
539 cxx_omp_predetermined_sharing_1. Rename old function to ...
540 (cxx_omp_predetermined_sharing_1): ... this.
541 * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
542 instead of cxx_omp_predetermined_sharing.
543
544 2018-05-10 Jason Merrill <jason@redhat.com>
545
546 * decl.c (cp_finish_decl): Don't instantiate auto variable.
547 (check_static_variable_definition): Allow auto.
548 * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
549
550 * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
551 (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
552
553 Core issue 2310 - conversion to base of incomplete type.
554 * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
555
556 CWG 2267 - list-initialization of reference temporary
557 * call.c (reference_binding): List-initializing a reference
558 temporary is copy-list-initialization.
559
560 * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
561
562 * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
563 instantiation in template context.
564
565 * class.c (vbase_has_user_provided_move_assign): Use
566 user_provided_p.
567
568 * lambda.c (lambda_expr_this_capture): Improve logic.
569
570 * decl.c (make_typename_type): s/parameters/arguments/.
571 * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
572 * pt.c (make_pack_expansion): Correct error message.
573
574 2018-05-10 Jakub Jelinek <jakub@redhat.com>
575
576 PR c++/85662
577 * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
578 fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
579 fold_convert.
580
581 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
582
583 PR c++/85400
584 * decl2.c (adjust_var_decl_tls_model): New static function.
585 (comdat_linkage): Call it on a variable.
586 (maybe_make_one_only): Likewise.
587
588 2018-05-09 Paolo Carlini <paolo.carlini@oracle.com>
589
590 PR c++/85713
591 Revert:
592 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
593
594 PR c++/84588
595 * parser.c (cp_parser_parameter_declaration_list): When the
596 entire parameter-declaration-list is erroneous maybe call
597 abort_fully_implicit_template.
598
599 2018-05-08 Jason Merrill <jason@redhat.com>
600
601 PR c++/85706 - class deduction under decltype
602 * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE. Clear
603 *walk_subtrees whether or not we walked into the operand.
604 (type_uses_auto): Only look at deduced contexts.
605
606 2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
607
608 PR c++/84588
609 * parser.c (cp_parser_parameter_declaration_list): When the
610 entire parameter-declaration-list is erroneous maybe call
611 abort_fully_implicit_template.
612
613 2018-05-08 Marek Polacek <polacek@redhat.com>
614
615 PR c++/85695
616 * semantics.c (finish_if_stmt_cond): See through typedefs.
617
618 2018-05-07 Jason Merrill <jason@redhat.com>
619
620 PR c++/85646 - lambda visibility.
621 * decl2.c (determine_visibility): Don't mess with template arguments
622 from the containing scope.
623 (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
624 thunk.
625
626 2018-05-07 Nathan Sidwell <nathan@acm.org>
627
628 Remove fno-for-scope
629 * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
630 (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
631 (SET_DECL_SHADOWED_FOR_VAR): Delete.
632 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
633 (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
634 Don't declare.
635 * name-lookup.h (struct cp_binding_level): Remove
636 dead_vars_from_for field.
637 * cp-lang.c (cp_init_ts): Delete.
638 (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
639 * cp-objcp-common.c (shadowed_var_for_decl): Delete.
640 (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
641 (init_shadowed_var_for_decl): Delete.
642 * decl.c (poplevel): Remove shadowed for var handling.
643 (cxx_init_decl_processing): Remove -ffor-scope deprecation.
644 * name-lookup.c (find_local_binding): Remove shadowed for var
645 handling.
646 (check_local_shadow): Likewise.
647 (check_for_out_of_scope_variable): Delete.
648 * parser.c (cp_parser_primary_expression): Remove shadowed for var
649 handling.
650 * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
651 * semantics.c (begin_for_scope): Always have a scope.
652 (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
653 (begin_range_for_stmt, finish_id_expression): Likewise.
654
655 2018-05-07 Jason Merrill <jason@redhat.com>
656
657 PR c++/85618 - ICE with initialized VLA.
658 * tree.c (vla_type_p): New.
659 * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
660 rather than array_of_runtime_bound_p.
661
662 2018-05-05 Paolo Carlini <paolo.carlini@oracle.com>
663
664 * cvt.c (ocp_convert): Early handle the special case of a
665 null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
666
667 2018-05-03 Jason Merrill <jason@redhat.com>
668
669 PR c++/85600 - virtual delete failure.
670 * init.c (build_delete): Always save_expr when deleting.
671
672 2018-05-03 Nathan Sidwell <nathan@acm.org>
673
674 * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
675 * name-lookup.c (do_pushdecl): Likewise.
676
677 2018-05-02 Paolo Carlini <paolo.carlini@oracle.com>
678 Jason Merrill <jason@redhat.com>
679
680 PR c++/68374
681 * name-lookup.c (check_local_shadow): Don't handle static old
682 declarations in the block handling locals shadowing locals.
683
684 2018-05-01 Jason Merrill <jason@redhat.com>
685
686 PR c++/85587 - error with scoped enum in template.
687 * semantics.c (finish_qualified_id_expr): Don't return an
688 unqualified IDENTIFIER_NODE.
689
690 2018-04-30 Jason Merrill <jason@redhat.com>
691
692 PR c++/85580 - extern "C" and local variables
693 * name-lookup.c (check_extern_c_conflict): Ignore local decls.
694
695 PR c++/84701 - unsigned typeof.
696 * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
697 of long/short/signed/unsigned.
698
699 PR c++/85305 - pack in lambda init-capture.
700 * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
701 check_for_bare_parameter_packs in a subexpression.
702 (cp_parser_lambda_introducer): Use it.
703
704 PR c++/61982 - dead stores to destroyed objects.
705 * call.c (build_trivial_dtor_call): New, assigns a clobber.
706 (build_over_call, build_special_member_call): Use it.
707 * cp-tree.h: Declare it.
708 * init.c (build_delete): Remove trivial path.
709
710 * init.c (build_dtor_call): Use build_special_member_call.
711 (build_delete): Remove redundant uses of save_addr.
712
713 * decl.c (build_clobber_this): Use build_clobber.
714
715 2018-04-27 Jakub Jelinek <jakub@redhat.com>
716
717 PR c++/85553
718 * init.c (build_zero_init_1): For zero initialization of
719 NULLPTR_TYPE_P type use build_int_cst directly.
720
721 2018-04-27 David Malcolm <dmalcolm@redhat.com>
722
723 PR c++/85515
724 * name-lookup.c (consider_binding_level): Skip compiler-generated
725 variables.
726 * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
727 nested if statements into a series of rejection tests. Reject
728 lambda-ignored entities as suggestions.
729
730 2018-04-27 Jason Merrill <jason@redhat.com>
731
732 * cvt.c (cp_fold_convert): Use convert_ptrmem.
733 * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
734
735 2018-04-27 Paolo Carlini <paolo.carlini@oracle.com>
736
737 PR c++/84691
738 * decl.c (grokdeclarator): Clear friendp upon definition in local
739 class definition error.
740
741 2018-04-27 Jason Merrill <jason@redhat.com>
742
743 PR c++/85545 - ICE with noexcept PMF conversion.
744 * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
745 build_ptrmemfunc.
746 * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
747 adjustment.
748 (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
749
750 2018-04-27 Nathan Sidwell <nathan@acm.org>
751
752 * typeck.c (convert_ptrmem): Move local var decls to initialization.
753
754 * cp-tree.h (TEMPLATE_INFO): Fix comments.
755 (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
756 (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
757 (dump, print_other_binding_stacks): Remove declarations.
758 * name-lookup.c (print_other_binding_stack): Make static.
759 * pt.c (build_template_decl): Make static.
760
761 2018-04-26 Jason Merrill <jason@redhat.com>
762
763 PR c++/85545 - ICE with noexcept PMF conversion.
764 * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
765
766 2018-04-25 Nathan Sidwell <nathan@acm.org>
767
768 PR c++/85437
769 PR c++/49171
770 * cp-tree.h (REINTERPRET_CAST_P): New.
771 * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
772 Reject REINTERPET_CAST_P conversions. Use cplus_expand_constant
773 for non-trivial PTRMEM_CST cases.
774 * typeck.c (build_nop_reinterpret): New.
775 (build_reinterpret_cast_1): Use it. Set REINTERPRET_CAST_P on
776 NOP_EXPRs returned by cp_convert.
777
778 2018-04-23 Jason Merrill <jason@redhat.com>
779
780 PR c++/69560 - wrong alignof(double) on x86.
781 CWG 1879 - Inadequate definition of alignment requirement.
782 * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
783 * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
784 (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
785 (cxx_alignof_expr): Pass it.
786 * parser.c (cp_parser_unary_expression): Pass it.
787 * pt.c (tsubst_copy): Copy it.
788 (tsubst_copy_and_build): Pass it.
789 * decl.c (fold_sizeof_expr): Pass it.
790
791 2018-04-23 Jakub Jelinek <jakub@redhat.com>
792 Jason Merrill <jason@redhat.com>
793
794 PR c++/85470 - wrong error with static data member.
795 * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
796 * typeck2.c (store_init_value): Likewise.
797
798 2018-04-20 Jakub Jelinek <jakub@redhat.com>
799
800 PR c++/85462
801 * cp-tree.h (tinst_level): Remove in_system_header_p member,
802 change refcount member from unsigned char to unsigned short,
803 add refcount_infinity static data member, adjust comments.
804 * pt.c (tinst_level::refcount_infinity): Define.
805 (inc_refcount_use): Remove assert, don't increment if refcount
806 is already refcount_infinity, adjust comment.
807 (dec_refcount_use): Remove assert, don't decrement if refcount
808 is refcount_infinity, adjust comment.
809 (push_tinst_level_loc): Formatting fix.
810
811 2018-04-19 Paolo Carlini <paolo.carlini@oracle.com>
812
813 PR c++/84611
814 * pt.c (lookup_template_class_1): Check pushtag return value for
815 error_mark_node.
816
817 2018-04-19 Alexandre Oliva <aoliva@redhat.com>
818
819 PR c++/80290
820 * cp-tree.h (tinst_level::free): Fix whitespace.
821
822 2018-04-18 Paolo Carlini <paolo.carlini@oracle.com>
823
824 PR c++/84630
825 * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
826 for error_mark_node.
827
828 2018-04-18 Jakub Jelinek <jakub@redhat.com>
829
830 PR c++/84463
831 * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
832 tricks from here to ...
833 * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here. Only use it
834 if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
835
836 2018-04-18 Alexandre Oliva <aoliva@redhat.com>
837
838 PR c++/80290
839 * cp-tree.h (struct tinst_level): Split decl into tldcl and
840 targs. Add private split_list_p, tree_list_p, and not_list_p
841 inline const predicates; to_list private member function
842 declaration; free public member function declaration; list_p,
843 get_node and maybe_get_node accessors, and refcount data
844 member. Narrow errors to unsigned short.
845 * error.c (print_instantiation_full_context): Use new
846 accessors.
847 (print_instantiation_partial_context_line): Likewise. Drop
848 const from tinst_level-typed parameter.
849 * mangle.c (mangle_decl_string): Likewise.
850 * pt.c (freelist): New template class.
851 (tree_list_freelist_head): New var.
852 (tree_list_freelist): New fn, along with specializations.
853 (tinst_level_freelist_head): New var.
854 (pending_template_freelist_head): Likewise.
855 (tinst_level_freelist, pending_template_freelist): New fns.
856 (tinst_level::to_list, tinst_level::free): Define.
857 (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
858 (set_refcount_ptr): New template fn.
859 (add_pending_template): Adjust for refcounting, freelists and
860 new accessors.
861 (neglectable_inst_p): Take a NULL d as a non-DECL.
862 (limit_bad_template_recursion): Use new accessors.
863 (push_tinst_level): New overload to create the list.
864 (push_tinst_level_loc): Make it static, split decl into two
865 args, adjust tests and initialization to cope with split
866 lists, use freelist, adjust for refcounting.
867 (push_tinst_level_loc): New wrapper with the old interface.
868 (pop_tinst_level): Adjust for refcounting.
869 (record_last_problematic_instantiation): Likewise.
870 (reopen_tinst_level): Likewise. Use new accessors.
871 (instantiate_alias_template): Adjust for split list.
872 (fn_type_unification): Likewise.
873 (get_partial_spec_bindings): Likewise.
874 (instantiate_pending_templates): Use new accessors. Adjust
875 for refcount. Release pending_template to freelist.
876 (instantiating_current_function_p): Use new accessors.
877
878 2018-04-16 Alexandre Oliva <aoliva@redhat.com>
879
880 PR c++/85039
881 * parser.c (cp_parser_builtin_offset): Reject type definitions.
882 * mangle.c (nested_anon_class_index): Avoid crash returning -1
883 if we've seen errors.
884
885 2018-04-12 David Malcolm <dmalcolm@redhat.com>
886
887 PR c++/85385
888 * name-lookup.c (macro_use_before_def::maybe_make): New function,
889 checking that the use is indeed before the definition.
890 (macro_use_before_def::macro_use_before_def): Make private.
891 (macro_use_before_def::~macro_use_before_def): Make private. Move
892 check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
893 (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
894 than using new directly.
895
896 2018-04-12 Jason Merrill <jason@redhat.com>
897
898 PR c++/85356 - ICE with pointer to member function.
899 * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
900 flag_noexcept_type. Build the new spec within the function context.
901 * except.c (build_noexcept_spec): Do get constant value in templates
902 if flag_noexcept_type.
903 * decl.c (check_redeclaration_exception_specification): Don't
904 instantiate noexcept on a dependent declaration.
905
906 2018-04-12 Marek Polacek <polacek@redhat.com>
907
908 PR c++/85258
909 * constexpr.c (reduced_constant_expression_p): Return false for null
910 trees.
911
912 2018-04-11 Marek Polacek <polacek@redhat.com>
913
914 PR c++/85032
915 * constexpr.c (potential_constant_expression_1): Consider conversions
916 from classes to literal types potentially constant.
917
918 2018-04-10 Paolo Carlini <paolo.carlini@oracle.com>
919
920 PR c++/70808
921 * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
922 the type like TYPE_PTR_OR_PTRMEM_P.
923
924 2018-04-10 Jason Merrill <jason@redhat.com>
925
926 PR debug/65821 - wrong location for main().
927 * call.c (clear_location_r, convert_default_arg): Revert.
928 * tree.c (break_out_target_exprs): Add clear_location parm.
929 (struct bot_data): New.
930 (bot_manip): Clear location if requested.
931 * init.c (get_nsdmi): Pass clear_location.
932
933 2018-04-10 David Malcolm <dmalcolm@redhat.com>
934
935 PR c++/85110
936 * call.c (get_fndecl_argument_location): Make non-static.
937 * cp-tree.h (get_fndecl_argument_location): New decl.
938 * typeck.c (convert_for_assignment): When complaining due to
939 conversions for an argument, show the location of the parameter
940 within the decl.
941
942 2018-04-10 Jakub Jelinek <jakub@redhat.com>
943
944 PR c++/85312 - P0962 cleanup
945 * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
946 diagnostics.
947
948 2018-04-10 Jason Merrill <jason@redhat.com>
949
950 PR debug/65821 - wrong location for main().
951 * call.c (clear_location_r): New.
952 (convert_default_arg): Use it.
953 * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
954
955 PR c++/85285 - ICE with flexible array after substitution.
956 * pt.c (instantiate_class_template_1): Check for flexible array in
957 union.
958
959 2018-04-09 Paolo Carlini <paolo.carlini@oracle.com>
960
961 PR c++/85227
962 * decl.c (cp_finish_decomp): In a template, if the type is incomplete
963 issue a pedwarn and defer trying to do bindings.
964
965 2018-04-09 Jason Merrill <jason@redhat.com>
966
967 PR c++/85279 - dump_expr doesn't understand decltype.
968 * error.c (dump_expr): Handle DECLTYPE_TYPE.
969
970 PR c++/85262 - ICE with redundant qualification on constructor.
971 * call.c (build_new_method_call_1): Move make_args_non_dependent
972 after A::A() handling.
973
974 PR c++/85277 - ICE with invalid offsetof.
975 * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
976 Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
977
978 PR c++/85264 - ICE with excess template-parameter-list.
979 * parser.c (cp_parser_check_template_parameters): Add template_id_p
980 parameter. Don't allow an extra template header if true.
981 (cp_parser_class_head): Pass template_id_p.
982 (cp_parser_elaborated_type_specifier): Likewise.
983 (cp_parser_alias_declaration): Likewise.
984 (cp_parser_check_declarator_template_parameters): Likewise.
985
986 2018-04-09 Jakub Jelinek <jakub@redhat.com>
987
988 PR c++/85194
989 * parser.c (cp_parser_simple_declaration): For structured bindings,
990 if *maybe_range_for_decl is NULL after parsing it, set it to
991 error_mark_node.
992
993 2018-04-09 Jason Merrill <jason@redhat.com>
994
995 PR c++/85256 - ICE capturing pointer to VLA.
996 * lambda.c (add_capture): Distinguish between variable-size and
997 variably-modified types.
998
999 2018-04-06 Jason Merrill <jason@redhat.com>
1000
1001 PR c++/85214 - ICE with alias, generic lambda, constexpr if.
1002 * pt.c (extract_locals_r): Remember local typedefs.
1003
1004 2018-04-06 David Malcolm <dmalcolm@redhat.com>
1005
1006 PR c++/84269
1007 * name-lookup.c (struct std_name_hint): Move out of
1008 get_std_name_hint; add field "min_dialect".
1009 (get_std_name_hint): Add min_dialect values to all initializers.
1010 Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
1011 <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
1012 <shared_mutex>, <string_view>, <thread>, and <variant>.
1013 Add fstream, ifstream, and ofstream to <fstream>.
1014 Add istringstream, ostringstream, and stringstream to <sstream>.
1015 Add basic_string to <string>.
1016 Add tuple_element and tuple_size to <tuple>.
1017 Add declval to <utility>.
1018 Fix ordering of <queue> and <tuple>.
1019 Return a std_name_hint, rather than a const char *.
1020 (get_cxx_dialect_name): New function.
1021 (maybe_suggest_missing_std_header): Detect names that aren't yet
1022 available in the current dialect, and instead of suggesting a
1023 missing #include, warn about the dialect.
1024
1025 2018-04-06 Jakub Jelinek <jakub@redhat.com>
1026
1027 PR c++/85210
1028 * pt.c (tsubst_decomp_names): Return error_mark_node and assert
1029 errorcount is set if tsubst doesn't return a VAR_DECL.
1030
1031 2018-04-06 David Malcolm <dmalcolm@redhat.com>
1032
1033 PR c++/85021
1034 * name-lookup.c (using_directives_contain_std_p): New function.
1035 (has_using_namespace_std_directive_p): New function.
1036 (suggest_alternatives_for): Simplify if/else logic using early
1037 returns. If no candidates were found, and there's a
1038 "using namespace std;" directive, call
1039 maybe_suggest_missing_std_header.
1040 (maybe_suggest_missing_header): Split later part of the function
1041 into..
1042 (maybe_suggest_missing_std_header): New.
1043
1044 2018-04-06 Jason Merrill <jason@redhat.com>
1045
1046 PR c++/85242 - ICE with class definition in template parm.
1047 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
1048 processing_template_parmlist.
1049
1050 PR c++/85240 - LTO ICE with using of undeduced auto fn.
1051 * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
1052
1053 2018-04-05 Jakub Jelinek <jakub@redhat.com>
1054
1055 PR c++/85209
1056 * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
1057 is not prev, if prev == decl.
1058
1059 PR c++/85208
1060 * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
1061 maybe_apply_pragma_weak here...
1062 (cp_maybe_mangle_decomp): ... but call it here instead.
1063
1064 2018-04-05 Jason Merrill <jason@redhat.com>
1065
1066 PR c++/85136 - ICE with designated init in template.
1067 * decl.c (maybe_deduce_size_from_array_init): Handle dependent
1068 designated initializer.
1069 (check_array_designated_initializer): Update ce->index with the
1070 constant value.
1071
1072 PR c++/83808 - ICE with VLA initialization.
1073 * typeck2.c (process_init_constructor_array): Don't require a VLA
1074 initializer to have VLA type.
1075
1076 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
1077
1078 PR c++/80956
1079 * call.c (convert_like_real): Fail gracefully for a broken
1080 std::initializer_list, missing a definition.
1081
1082 * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
1083
1084 2018-04-05 Paolo Carlini <paolo.carlini@oracle.com>
1085
1086 PR c++/84792
1087 * decl.c (grokdeclarator): Fix diagnostic about typedef name used
1088 as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
1089
1090 2018-04-05 Jason Merrill <jason@redhat.com>
1091
1092 PR c++/82152 - ICE with class deduction and inherited ctor.
1093 * pt.c (do_class_deduction): Ignore inherited ctors.
1094
1095 PR c++/84665 - ICE with array of empty class.
1096 * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
1097
1098 PR c++/85228 - ICE with lambda in enumerator in template.
1099 * pt.c (bt_instantiate_type_proc): Don't assume
1100 CLASSTYPE_TEMPLATE_INFO is non-null.
1101
1102 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
1103
1104 Implement P0969
1105 * decl.c (find_decomp_class_base): Check accessibility instead
1106 of declared access, adjust diagnostic.
1107
1108 2018-04-05 Ville Voutilainen <ville.voutilainen@gmail.com>
1109
1110 Implement P0961
1111 * decl.c (get_tuple_decomp_init): Check the templatedness
1112 of a member get.
1113
1114 2018-04-05 Jason Merrill <jason@redhat.com>
1115
1116 PR c++/85200 - ICE with constexpr if in generic lambda.
1117 * pt.c (extract_locals_r): Don't record the local specs of variables
1118 declared within the pattern.
1119
1120 2018-04-05 Alexandre Oliva <aoliva@redhat.com>
1121
1122 PR c++/84979
1123 * pt.c (check_auto_in_tmpl_args): New.
1124 (tsubst_qualified_id): Use it to reject template args
1125 referencing auto for non-type templates.
1126 * parser.c (cp_parser_template_id): Likewise.
1127 * cp-tree.h (check_auto_in_tmpl_args): Declare.
1128 * typeck2.c (build_functional_cast): Report correct location
1129 for invalid use of auto.
1130
1131 2018-04-04 Jason Merrill <jason@redhat.com>
1132
1133 PR c++/85215 - ICE with copy-init from conversion.
1134 * call.c (merge_conversion_sequences): Fix type of direct binding
1135 sequence.
1136
1137 PR c++/84938 - ICE with division by ~-1.
1138 * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
1139
1140 PR c++/84936 - ICE with unexpanded pack in mem-initializer.
1141 * parser.c (cp_parser_mem_initializer_list): Call
1142 check_for_bare_parameter_packs.
1143
1144 2018-04-04 Jakub Jelinek <jakub@redhat.com>
1145
1146 PR inline-asm/85172
1147 * constexpr.c (cxx_eval_builtin_function_call): For calls to
1148 builtin_valid_in_constant_expr_p functions, don't call
1149 cxx_eval_constant_expression if argument is not
1150 potential_constant_expression.
1151
1152 PR c++/85146
1153 * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
1154 argument.
1155 * semantics.c (calculate_bases): Add complain argument. Use
1156 complete_type_or_maybe_complain instead of just complete_type and
1157 return an empty vector if it fails. Move make_tree_vector () call
1158 after early return. Formatting fixes.
1159 (calculate_direct_bases): Likewise. Call release_tree_vector at the
1160 end.
1161 (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
1162 * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
1163 calculate_direct_bases callers, formatting fixes.
1164
1165 2018-04-04 Jason Merrill <jason@redhat.com>
1166
1167 PR c++/85006 - -fconcepts ICE with A<auto...> return type
1168 * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
1169
1170 PR c++/85200 - ICE with constexpr if in generic lambda.
1171 * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
1172
1173 PR c++/84221 - bogus -Wunused with attribute and template.
1174 * decl2.c (is_late_template_attribute): Handle unused and used
1175 normally on non-TYPE_DECL.
1176
1177 PR c++/85135 - ICE with omitted template arguments.
1178 * decl.c (grokdeclarator): Catch deduced class type in trailing
1179 return type.
1180
1181 PR c++/85133 - ICE with missing concept initializer.
1182 * decl.c (cp_finish_decl): If a concept initializer is missing, use
1183 true.
1184
1185 PR c++/85118 - wrong error with generic lambda and std::bind.
1186 * call.c (add_template_conv_candidate): Disable if there are any
1187 call operators.
1188
1189 PR c++/85141 - ICE with compound assignment and static member fn.
1190 * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
1191 compound assignment.
1192
1193 PR c++/85148 - ICE with 'this' in array NSDMI.
1194 * tree.c (replace_placeholders_r): Use handled_component_p.
1195
1196 2018-04-04 Ville Voutilainen <ville.voutilainen@gmail.com>
1197
1198 PR c++/65923
1199 * decl.c (grokfndecl): Handle standard UDL diagnostics here..
1200 * parser.c (cp_parser_unqualified_id): ..not here.
1201
1202 2018-04-04 Alexandre Oliva <aoliva@redhat.com>
1203
1204 PR c++/84943
1205 * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
1206 used.
1207 * decl2.c (mark_used): Return without effects if tf_conv.
1208
1209 2018-04-03 Jason Merrill <jason@redhat.com>
1210
1211 PR c++/85092 - C++17 ICE with unused list constructor.
1212 * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
1213 from a TARGET_EXPR.
1214
1215 PR c++/85113 - ICE with constexpr and __builtin_constant_p.
1216 * constexpr.c (cxx_eval_builtin_function_call): Only defer
1217 __builtin_constant_p if ctx->quiet.
1218
1219 2018-04-03 Paolo Carlini <paolo.carlini@oracle.com>
1220
1221 PR c++/84768
1222 * pt.c (rewrite_template_parm): If the first argument is
1223 error_mark_node return it immediately.
1224 (build_deduction_guide): Check the return value of the
1225 latter for error_mark_node.
1226 (do_class_deduction): Check the return value of the latter.
1227
1228 2018-04-03 Jason Merrill <jason@redhat.com>
1229
1230 * semantics.c (finish_if_stmt_cond): Use
1231 instantiation_dependent_expression_p.
1232
1233 PR c++/85149 - generic lambda and constexpr if.
1234 * pt.c (build_extra_args, add_extra_args): Split from
1235 tsubst_pack_expansion.
1236 (tsubst_expr) [IF_STMT]: Use them.
1237 * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
1238
1239 * typeck.c (merge_types): Limit matching attribute shortcut to
1240 the default case.
1241
1242 2018-04-03 Jakub Jelinek <jakub@redhat.com>
1243
1244 PR c++/85147
1245 * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
1246
1247 PR c++/85140
1248 * name-lookup.c (handle_namespace_attrs): Return early if attributes
1249 is error_mark_node.
1250
1251 PR c++/85134
1252 * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
1253 fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
1254 instead for static data members clear init and set DECL_EXTERNAL.
1255
1256 2018-04-02 Jason Merrill <jason@redhat.com>
1257
1258 PR c++/64095 - auto... parameter pack.
1259 * parser.c (cp_parser_parameter_declaration): Handle turning autos
1260 into packs here.
1261 (cp_parser_parameter_declaration_list): Not here.
1262
1263 2018-03-31 Alexandre Oliva <aoliva@redhat.com>
1264
1265 PR c++/85027
1266 * class.c (instantiate_type): Peel off SAVE_EXPR before
1267 BASELINK.
1268
1269 2018-03-30 Jason Merrill <jason@redhat.com>
1270
1271 * typeck2.c (process_init_constructor_record): Use
1272 init_list_type_node for the CONSTRUCTOR around an anonymous union
1273 designated initializer.
1274
1275 2018-03-30 Jakub Jelinek <jakub@redhat.com>
1276
1277 PR c++/84791
1278 * semantics.c (finish_omp_reduction_clause): If
1279 OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
1280 even if processing_template_decl.
1281
1282 2018-03-29 David Malcolm <dmalcolm@redhat.com>
1283
1284 PR c++/84269
1285 * name-lookup.c (get_std_name_hint): Add names from <memory>,
1286 <tuple>, and <utility>.
1287
1288 2018-03-29 Jason Merrill <jason@redhat.com>
1289
1290 PR c++/85093 - too many template args with pack expansion.
1291 * pt.c (coerce_template_parms): Keep pack expansion args that will
1292 need to be empty.
1293
1294 2018-03-29 Jason Merrill <jason@redhat.com>
1295
1296 * pt.c (build_non_dependent_expr): Propagate expr location.
1297
1298 2018-03-27 Jason Merrill <jason@redhat.com>
1299
1300 PR c++/85060 - wrong-code with call to base member in template.
1301 * search.c (any_dependent_bases_p): Check uses_template_parms
1302 rather than processing_template_decl.
1303
1304 2018-03-29 David Malcolm <dmalcolm@redhat.com>
1305
1306 PR c++/85110
1307 * typeck.c (convert_for_assignment): When complaining due to
1308 conversions for an argument, attempt to use the location of the
1309 argument.
1310
1311 2018-03-28 Paolo Carlini <paolo.carlini@oracle.com>
1312
1313 PR c++/85028
1314 * pt.c (tsubst_default_argument): Early return if the type of the
1315 parameter is erroneous.
1316
1317 2018-03-28 Alexandre Oliva <aoliva@redhat.com>
1318
1319 PR c++/84973
1320 * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
1321 templates.
1322
1323 PR c++/84968
1324 * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
1325
1326 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
1327
1328 PR c++/85067
1329 * method.c (defaulted_late_check): Partially revert r253321 changes,
1330 do not early return upon error.
1331
1332 2018-03-27 Jakub Jelinek <jakub@redhat.com>
1333
1334 PR c++/85077
1335 * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
1336 type call fold to generate VECTOR_CSTs when possible.
1337
1338 PR c++/85076
1339 * tree.c (cp_build_reference_type): If to_type is error_mark_node,
1340 return it right away.
1341
1342 2018-03-27 Volker Reichelt <v.reichelt@netcologne.de>
1343
1344 * search.c (check_final_overrider): Use inform instead of error
1345 for the diagnostics of the overridden functions. Tweak wording.
1346
1347 2018-03-27 Jakub Jelinek <jakub@redhat.com>
1348
1349 PR c++/85068
1350 * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
1351 is NULL. Assert if thunk_binfo is NULL then errorcount is non-zero.
1352
1353 2018-03-27 Paolo Carlini <paolo.carlini@oracle.com>
1354 Jason Merrill <jason@redhat.com>
1355
1356 PR c++/84632
1357 * init.c (build_aggr_init): When initializing from array,
1358 reject anything but CONSTRUCTORs and TARGET_EXPRs.
1359 (build_vec_init): Handle separately ARRAY_TYPEs.
1360
1361 2018-03-26 Jason Merrill <jason@redhat.com>
1362
1363 PR c++/85062 - ICE with alignas in wrong place.
1364 * decl.c (grokdeclarator): Ignore attributes on type-specifiers
1365 here.
1366
1367 PR c++/85049 - ICE with __integer_pack.
1368 * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
1369 * cp-tree.h (TEMPLATE_PARM_P): New.
1370
1371 2018-03-23 Jason Merrill <jason@redhat.com>
1372
1373 PR c++/78489 - wrong SFINAE behavior.
1374
1375 PR c++/84489
1376 * pt.c (type_unification_real): Don't defer substitution failure.
1377
1378 2018-03-23 Jakub Jelinek <jakub@redhat.com>
1379
1380 PR c++/85015
1381 * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
1382 result.
1383
1384 PR c++/84942
1385 * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
1386 cp_build_unary_op call with gcc_unreachable ().
1387
1388 2018-03-23 Marek Polacek <polacek@redhat.com>
1389
1390 PR c++/85045
1391 * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
1392 Handle EXACT_DIV_EXPR and RDIV_EXPR. Tweak condition.
1393 (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
1394
1395 2018-03-23 Ville Voutilainen <ville.voutilainen@gmail.com>
1396
1397 Implement P0962
1398 * parser.c (cp_parser_perform_range_for_lookup): Change
1399 the condition for deciding whether to use members.
1400
1401 2018-03-23 Marek Polacek <polacek@redhat.com>
1402
1403 PR c++/85033
1404 * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
1405
1406 2018-03-23 Alexandre Oliva <aoliva@redhat.com>
1407
1408 PR c++/71251
1409 * parser.c (cp_parser_alias_declaration): Call
1410 parser_check_template_parameters.
1411
1412 PR c++/84789
1413 * pt.c (resolve_typename_type): Drop assert that stopped
1414 simplification to template-independent types. Add assert to
1415 verify the initial scope is template dependent.
1416 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1417 Reparse the id expression as a type-name, not a declarator.
1418
1419 PR c++/84729
1420 * init.c (build_vec_init): Error at parenthesized array init.
1421
1422 PR c++/84610
1423 PR c++/84642
1424 PR c++/84942
1425 * cp-tree.h (temp_override): New template class, generalizing
1426 a cleanup that was only used...
1427 * parser.c (cp_parser_parameter_declaration_clause):
1428 ... here for auto_is_implicit_function_template_parm_p.
1429 (cp_parser_gnu_attributes_opt): Use it here as well.
1430 (cp_parser_std_attribute): Likewise.
1431
1432 2018-03-22 Marek Polacek <polacek@redhat.com>
1433
1434 PR c++/84854
1435 * semantics.c (finish_if_stmt_cond): Check if the type of the condition
1436 is boolean.
1437
1438 2018-03-21 Jason Merrill <jason@redhat.com>
1439
1440 PR c++/81311 - wrong C++17 overload resolution.
1441 * call.c (build_user_type_conversion_1): Remove C++17 code.
1442 (conv_binds_ref_to_prvalue): New.
1443 (build_over_call): Handle C++17 copy elision.
1444 (build_special_member_call): Only do C++17 copy elision here if the
1445 argument is already the right type.
1446
1447 2018-03-21 Alexandre Oliva <aoliva@redhat.com>
1448
1449 PR c++/71965
1450 * init.c (build_vec_init): Silence error, former sorry,
1451 without tf_error.
1452
1453 PR c++/84610
1454 PR c++/84642
1455 * parser.c (abort_fully_implicit_template_p): New.
1456 (cp_parser_skip_to_end_of_statement): Use it.
1457 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
1458 (finish_fully_implicit_template_p): Clear
1459 implicit_template_parms and implicit_template_scope.
1460
1461 2018-03-21 Paolo Carlini <paolo.carlini@oracle.com>
1462
1463 PR c++/84972
1464 * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
1465 error_mark_node when check_array_designated_initializer fails.
1466
1467 2018-03-21 Jakub Jelinek <jakub@redhat.com>
1468
1469 PR c++/84961
1470 * cp-tree.h (genericize_compound_lvalue): Declare.
1471 * typeck.c (genericize_compound_lvalue): New function.
1472 (unary_complex_lvalue, cp_build_modify_expr): Use it.
1473 * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
1474 and PREDECREMENT_EXPR in output and "m" constrained input operands with
1475 COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost
1476 COMPOUND_EXPR operand.
1477
1478 2018-03-21 Nathan Sidwell <nathan@acm.org>
1479
1480 PR c++/85008
1481 * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
1482 * decl2.c (vague_linkage_p): Likewise.
1483
1484 2018-03-21 David Malcolm <dmalcolm@redhat.com>
1485
1486 PR c++/84994
1487 * constexpr.c (constexpr_fn_retval): Make non-"static".
1488 * cp-tree.h (constexpr_fn_retval): New decl.
1489 * search.c (direct_accessor_p): Update leading comment.
1490 (reference_accessor_p): Likewise.
1491 (field_accessor_p): Replace check that function body is a
1492 RETURN_EXPR with a call to constexpr_fn_retval. Fix
1493 indentation of "field_type" decl.
1494
1495 2018-03-21 Nathan Sidwell <nathan@acm.org>
1496
1497 PR c++/84804
1498 * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
1499 complete classes.
1500
1501 2018-03-21 Martin Sebor <msebor@redhat.com>
1502
1503 PR c++/84850
1504 * call.c (first_non_public_field): New template and function.
1505 (first_non_trivial_field): New function.
1506 (maybe_warn_class_memaccess): Call them.
1507
1508 2018-03-21 David Malcolm <dmalcolm@redhat.com>
1509
1510 PR c++/84892
1511 * search.c (field_accessor_p): Use class_of_this_parm rather than
1512 type_of_this_parm, to check that "this" is a "const T *", rather
1513 than a "T *const".
1514
1515 2018-03-21 Nathan Sidwell <nathan@acm.org>
1516
1517 * class.c (finish_struct_anon_r): Refactor, deprecate anything
1518 other than public non-static data members.
1519 * parser.c (cp_parser_init_declarator): Deprecate attributes after
1520 parenthesized initializer.
1521
1522 PR c++/84836
1523 * name-lookup.c (update_binding): Correct logic for local binding
1524 update.
1525
1526 2018-03-21 Marek Polacek <polacek@redhat.com>
1527
1528 PR c++/71638, ICE with NSDMI and reference.
1529 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1530 even when we replace an element.
1531
1532 2018-03-20 Marek Polacek <polacek@redhat.com>
1533
1534 PR c++/84978, ICE with NRVO.
1535 * constexpr.c (cxx_eval_constant_expression): Handle the case when
1536 a RESULT_DECL isn't in the hash map.
1537
1538 2018-03-20 Jason Merrill <jason@redhat.com>
1539
1540 PR c++/84978, ICE with NRVO.
1541 * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
1542 (cp_get_callee_fndecl_nofold): New.
1543 * cp-gimplify.c (cp_genericize_r): Use it instead.
1544 * call.c (check_self_delegation): Likewise.
1545
1546 2018-03-20 Nathan Sidwell <nathan@acm.org>
1547
1548 PR c++/84962
1549 * name-lookup.c (pushdecl_class_level): Push anon-struct's
1550 member_vec, if there is one.
1551
1552 PR c++/84970
1553 * cp-tree.h (lookup_list_keep): Declare.
1554 * tree.c (lookup_list_keep): New, broken out of ...
1555 (build_min): ... here. Call it.
1556 * decl.c (cp_finish_decl): Call lookup_list_keep.
1557
1558 2018-03-19 Jason Merrill <jason@redhat.com>
1559
1560 PR c++/84937 - ICE with class deduction and auto.
1561 * pt.c (rewrite_template_parm): Fix auto handling.
1562
1563 2018-03-19 Marek Polacek <polacek@redhat.com>
1564
1565 PR c++/84925
1566 * pt.c (enclosing_instantiation_of): Check if fn is null.
1567
1568 PR c++/84927
1569 * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
1570 as we evaluate the elements.
1571 (cxx_eval_constant_expression): Verify constructor's flags
1572 unconditionally.
1573
1574 2018-03-19 Jason Merrill <jason@redhat.com>
1575
1576 PR c++/71834 - template-id with too few arguments.
1577 * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
1578
1579 2018-03-19 Nathan Sidwell <nathan@acm.org>
1580
1581 PR c++/84835
1582 * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
1583 * pt.c (build_template_decl): Propagate language linkage.
1584
1585 PR c++/84812
1586 * name-lookup.c (set_local_extern_decl_linkage): Defend against
1587 ambiguous lookups.
1588
1589 2018-03-16 Jakub Jelinek <jakub@redhat.com>
1590
1591 PR c/84910
1592 * parser.c (cp_parser_lambda_introducer): Remove trailing space from
1593 diagnostics.
1594 * method.c (synthesize_method): Likewise.
1595 * pt.c (convert_nontype_argument): Likewise.
1596
1597 2018-03-16 Jason Merrill <jason@redhat.com>
1598
1599 PR c++/84720 - ICE with rvalue ref non-type argument.
1600 * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
1601 (convert_nontype_argument): Revert earlier change.
1602
1603 PR c++/80227 - SFINAE and negative array size.
1604 * decl.c (compute_array_index_type): Use
1605 build_converted_constant_expr and valid_constant_size_p.
1606
1607 PR c++/84906 - silent wrong code with ambiguous conversion.
1608 * call.c (build_user_type_conversion_1): Set need_temporary_p on
1609 ambiguous conversion.
1610 (convert_like_real): Check it.
1611
1612 PR c++/83937 - wrong C++17 handling of init-list ctor argument.
1613 * call.c (build_special_member_call): Don't convert an init-list
1614 argument directly to the class type.
1615
1616 2018-03-16 Jakub Jelinek <jakub@redhat.com>
1617
1618 PR c++/79937
1619 PR c++/82410
1620 * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
1621 (find_placeholder): Declare.
1622 * tree.c (struct replace_placeholders_t): Add exp member.
1623 (replace_placeholders_r): Don't walk into ctors with
1624 CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
1625 d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
1626 (replace_placeholders): Initialize data.exp.
1627 (find_placeholders_r, find_placeholders): New functions.
1628 * typeck2.c (process_init_constructor_record,
1629 process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
1630 if adding NSDMI on which find_placeholder returns true.
1631 * call.c (build_over_call): Don't call replace_placeholders here.
1632 * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
1633 TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
1634 TARGET_EXPR_INITIAL.
1635 (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
1636 ctor.
1637
1638 2018-03-16 Jason Merrill <jason@redhat.com>
1639
1640 PR c++/83911 - ICE with multiversioned constructor.
1641 * cp-gimplify.c (cp_genericize_r): Replace versioned function with
1642 dispatchere here.
1643 * call.c (build_over_call): Not here.
1644
1645 2018-03-16 Jakub Jelinek <jakub@redhat.com>
1646
1647 PR c++/84874
1648 * decl.c (reshape_init_class): Don't assert d->cur->index == field
1649 if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
1650
1651 2018-03-15 Jakub Jelinek <jakub@redhat.com>
1652
1653 PR c++/84222
1654 * cp-tree.h (cp_warn_deprecated_use): Declare.
1655 * tree.c (cp_warn_deprecated_use): New function.
1656 * typeck2.c (build_functional_cast): Use it.
1657 * decl.c (grokparms): Likewise.
1658 (grokdeclarator): Likewise. Temporarily push nested class scope
1659 around grokparms call for out of class member definitions.
1660
1661 2018-03-14 Jason Merrill <jason@redhat.com>
1662
1663 PR c++/84820 - no error for invalid qualified-id.
1664 * parser.c (cp_parser_make_indirect_declarator): Don't wrap
1665 cp_error_declarator.
1666
1667 PR c++/84801 - ICE with unexpanded pack in lambda.
1668 * pt.c (check_for_bare_parameter_packs): Don't return early for a
1669 lambda in non-template context.
1670
1671 PR c++/81236 - auto variable and auto function
1672 * pt.c (tsubst_baselink): Update the type of the BASELINK after
1673 mark_used.
1674
1675 2018-03-14 Jason Merrill <jason@redhat.com>
1676
1677 PR c++/83916 - ICE with template template parameters.
1678 * pt.c (convert_template_argument): Don't substitute into type of
1679 non-type parameter if we don't have enough arg levels.
1680 (unify): Likewise.
1681
1682 2018-03-14 Marek Polacek <polacek@redhat.com>
1683
1684 PR c++/84596
1685 * semantics.c (finish_static_assert): Check
1686 instantiation_dependent_expression_p instead of
1687 {type,value}_dependent_expression_p.
1688
1689 2018-03-13 Paolo Carlini <paolo.carlini@oracle.com>
1690 Jason Merrill <jason@redhat.com>
1691
1692 PR c++/82336 - link error with list-init default argument.
1693 * decl.c (check_default_argument): Unshare an initializer list.
1694
1695 2018-03-13 Jakub Jelinek <jakub@redhat.com>
1696
1697 PR c++/84843
1698 * decl.c (duplicate_decls): For redefinition of built-in, use error
1699 and return error_mark_node. For redeclaration, return error_mark_node
1700 rather than olddecl if !flag_permissive.
1701
1702 2018-03-13 Jason Merrill <jason@redhat.com>
1703
1704 PR c++/82565 - ICE with concepts and generic lambda.
1705 * pt.c (instantiate_decl): Clear fn_context for lambdas.
1706
1707 2018-03-13 Jason Merrill <jason@redhat.com>
1708
1709 PR c++/84720 - ICE with rvalue ref non-type argument.
1710 * pt.c (convert_nontype_argument): Handle rvalue references.
1711
1712 PR c++/84839 - ICE with decltype of parameter pack.
1713 * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
1714 instantiating dummy parms.
1715
1716 * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
1717 parameter even without -Wpedantic.
1718
1719 PR c++/84798 - ICE with auto in abstract function declarator.
1720 * parser.c (cp_parser_parameter_declaration_clause): Check
1721 parser->default_arg_ok_p.
1722
1723 2018-03-13 Jakub Jelinek <jakub@redhat.com>
1724
1725 PR c++/84808
1726 * constexpr.c (find_array_ctor_elt): Don't use elt reference after
1727 first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
1728 sizetype. Formatting fixes.
1729
1730 2018-03-12 Jason Merrill <jason@redhat.com>
1731
1732 PR c++/84355 - ICE with deduction for member class template.
1733 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
1734 CLASS_PLACEHOLDER_TEMPLATE.
1735
1736 PR c++/84802 - ICE capturing uninstantiated class.
1737 * lambda.c (build_capture_proxy): Call complete_type.
1738
1739 2018-03-09 Jason Merrill <jason@redhat.com>
1740
1741 PR c++/84770 - ICE with typedef and parameter pack.
1742 * pt.c (verify_unstripped_args_1): Split out from
1743 verify_unstripped_args.
1744
1745 PR c++/84785 - ICE with alias template and default targs.
1746 * pt.c (type_unification_real): Set processing_template_decl if
1747 saw_undeduced == 1.
1748
1749 PR c++/84752 - ICE with capture of constexpr array.
1750 * call.c (standard_conversion): Set rvaluedness_matches_p on the
1751 identity conversion under ck_lvalue.
1752
1753 2018-03-09 Jason Merrill <jason@redhat.com>
1754 Paolo Carlini <paolo.carlini@oracle.com>
1755
1756 PR c++/71169
1757 PR c++/71832
1758 * pt.c (any_erroneous_template_args_p): New.
1759 * cp-tree.h (any_erroneous_template_args_p): Declare it.
1760 * parser.c (cp_parser_class_specifier_1): Use it.
1761
1762 2018-03-09 Jason Merrill <jason@redhat.com>
1763
1764 PR c++/84726 - unnecessary capture of constant vars.
1765 * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1766 (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1767 * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1768 * lambda.c (is_constant_capture_proxy)
1769 (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1770 (prune_lambda_captures): New.
1771 (finish_lambda_function): Call prune_lambda_captures.
1772
1773 2018-03-09 Jason Merrill <jason@redhat.com>
1774 Jakub Jelinek <jakub@redhat.com>
1775
1776 PR c++/84076
1777 * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1778 build ADDR_EXPR with REFERENCE_TYPE.
1779 (build_over_call): For purposes of check_function_arguments, if
1780 argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1781 its operand rather than the argument itself.
1782
1783 2018-03-09 Jakub Jelinek <jakub@redhat.com>
1784
1785 PR c++/84724
1786 * decl.c (duplicate_decls): Don't override __* prefixed builtins
1787 except for __[^b]*_chk, instead issue permerror and for -fpermissive
1788 also a note and return olddecl.
1789
1790 2018-03-09 Nathan Sidwell <nathan@acm.org>
1791
1792 PR c++/84733
1793 * name-lookup.c (do_pushdecl_with_scope): Only clear
1794 current_function_decl when pushing a non-class (i.e. namespace)
1795 scope.
1796
1797 2018-03-08 Jason Merrill <jason@redhat.com>
1798 Jakub Jelinek <jakub@redhat.com>
1799
1800 PR c++/80598
1801 * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1802 not calling mark_used for the benefit of -Wunused-function warning.
1803
1804 2018-03-06 Jason Merrill <jason@redhat.com>
1805
1806 * lambda.c (is_capture_proxy_with_ref): Remove.
1807 * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1808
1809 2018-03-06 Marek Polacek <polacek@redhat.com>
1810
1811 PR c++/84684
1812 * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1813 arguments.
1814
1815 2018-03-06 Alexandre Oliva <aoliva@redhat.com>
1816
1817 PR c++/84231
1818 * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1819 only while processing template decls.
1820 * typeck.c (build_x_conditional_expr): Move wrapping of
1821 reference type around type...
1822 * call.c (build_conditional_expr_1): ... here. Rename
1823 is_lvalue to is_glvalue.
1824 * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1825 INDIRECT_REF of COND_EXPR too.
1826
1827 PR c++/84593
1828 * init.c (build_zero_init_1): Zero-initialize references.
1829
1830 PR c++/84492
1831 * semantics.c (finish_stmt_expr_expr): Reject unresolved
1832 overloads used as stmt expr values.
1833
1834 2018-03-05 Jason Merrill <jason@redhat.com>
1835
1836 PR c++/84708 - ICE with lambda in local class NSDMI.
1837 * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1838 context.
1839
1840 2018-03-05 Jakub Jelinek <jakub@redhat.com>
1841
1842 PR c++/84684
1843 * constexpr.c (constexpr_call_hasher::equal): Return false if
1844 lhs->hash != rhs->hash. Change return 1 to return true and
1845 return 0 to return false.
1846
1847 2018-03-05 Nathan Sidwell <nathan@acm.org>
1848
1849 PR c++/84702
1850 * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1851
1852 2018-03-05 Marek Polacek <polacek@redhat.com>
1853
1854 PR c++/84707
1855 * decl.c (duplicate_decls): Check DECL_NAME before accessing
1856 UDLIT_OPER_P.
1857
1858 2018-03-05 Nathan Sidwell <nathan@acm.org>
1859
1860 PR c++/84694
1861 * friend.c (do_friend): Restore check for identifier_p inside
1862 TEMPLATE_ID_EXPR.
1863
1864 2018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
1865
1866 PR c++/84618
1867 * parser.c (cp_parser_lambda_introducer): Reject any capture not
1868 involving a VAR_DECL or a PARM_DECL.
1869
1870 2018-03-05 Pádraig Brady <P@draigBrady.com>
1871 Jason Merrill <jason@redhat.com>
1872 Nathan Sidwell <nathan@acm.org>
1873
1874 PR c++/84497
1875 * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1876
1877 2018-03-03 Jason Merrill <jason@redhat.com>
1878
1879 PR c++/84686 - missing volatile loads.
1880 * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1881
1882 2018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
1883
1884 PR c++/71464
1885 * optimize.c (maybe_thunk_body): Bail out immediately if either
1886 fns[0] or fns[1] is null.
1887
1888 2018-03-02 Marek Polacek <polacek@redhat.com>
1889
1890 PR c++/84578
1891 * constexpr.c (get_array_or_vector_nelts): New.
1892 (cxx_eval_array_reference): Use it.
1893 (cxx_eval_vec_init_1): Likewise.
1894 (cxx_eval_store_expression): Likewise.
1895
1896 2018-03-02 Jason Merrill <jason@redhat.com>
1897
1898 * semantics.c (force_paren_expr): Remove redundant test.
1899
1900 2018-03-02 Marek Polacek <polacek@redhat.com>
1901
1902 PR c++/84663
1903 * decl.c (cp_complete_array_type): Check error_mark_node.
1904
1905 PR c++/84664
1906 * typeck.c (cp_perform_integral_promotions): Check the result of
1907 mark_rvalue_use.
1908
1909 2018-03-02 Jakub Jelinek <jakub@redhat.com>
1910
1911 PR c++/84662
1912 * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1913 RETURN instead of return.
1914 <case POINTER_PLUS_EXPR>: Likewise.
1915 <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1916 it instead of wrapping it into CONVERT_EXPR.
1917
1918 2018-03-02 Jason Merrill <jason@redhat.com>
1919
1920 Fix MIPS16 ICE.
1921 * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1922
1923 2018-03-02 Marek Polacek <polacek@redhat.com>
1924
1925 PR c++/84590
1926 * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1927 wrapped in VIEW_CONVERT_EXPR.
1928
1929 2018-03-01 Martin Sebor <msebor@redhat.com>
1930
1931 PR c++/84294
1932 * decl.c (check_redeclaration_no_default_args): Merge attributes
1933 specified on redeclarations of the same function template.
1934 Remove dead code.
1935
1936 2018-03-01 Marek Polacek <polacek@redhat.com>
1937 Jason Merrill <jason@redhat.com>
1938
1939 PR c++/84582
1940 * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1941 a template.
1942 (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1943 * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1944 of instantiate_non_dependent_expr.
1945 * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1946
1947 2018-03-01 Nathan Sidwell <nathan@acm.org>
1948
1949 PR c++/84434
1950 * name-lookup.c (member_vec_dedup): Remove manually peeled
1951 iteration. Ignore dependent ctor inheritance.
1952
1953 2018-03-01 Jason Merrill <jason@redhat.com>
1954
1955 PR c++/71569 - decltype of template.
1956 * parser.c (cp_parser_decltype_expr): Handle missing template args.
1957
1958 2018-03-01 Marek Polacek <polacek@redhat.com>
1959
1960 PR c++/84596
1961 * constexpr.c (require_rvalue_constant_expression): New function.
1962 * cp-tree.h: Declare it.
1963 * semantics.c (finish_static_assert): Use it instead of
1964 require_potential_rvalue_constant_expression.
1965
1966 2018-03-01 Jason Merrill <jason@redhat.com>
1967 Alexandre Oliva <aoliva@redhat.com>
1968
1969 PR c++/71569 - ICE with redundant args on member variable template.
1970 * decl.c (start_decl): Handle partial specialization of member
1971 variable template.
1972 * pt.c (determine_specialization): Allow partial specialization
1973 of member variable template without specializing enclosing class.
1974 (process_partial_specialization): Improve error message.
1975
1976 2018-02-28 Jason Merrill <jason@redhat.com>
1977
1978 PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1979 * pt.c (determine_specialization): Check ref-qualifier.
1980
1981 2018-02-28 Jakub Jelinek <jakub@redhat.com>
1982
1983 PR c++/84609
1984 * parser.c (cp_parser_attributes_opt): Formatting fix.
1985 (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1986 cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1987 New functions.
1988 (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1989 instead of tentative parse to peek over optional attribute tokens
1990 to check for CPP_COLON after them.
1991
1992 PR c++/83871
1993 PR c++/83503
1994 * pt.c (INCLUDE_STRING): Remove define.
1995 (warn_spec_missing_attributes): Use pretty_printer instead of
1996 std::string. Fix up inform call so that the list of attributes
1997 is in %s argument.
1998
1999 2018-02-28 Martin Sebor <msebor@redhat.com>
2000
2001 PR testsuite/84617
2002 * decl.c (duplicate_decls): Fully merge attributes const, pure,
2003 and malloc.
2004
2005 2018-02-28 Nathan Sidwell <nathan@acm.org>
2006
2007 PR c++/84602
2008 * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
2009 * name-lookup.c (fields_linear_search): Look in an anon-aggr
2010 regardless of want_type.
2011 (search_anon_aggr): Just use get_class_binding_direct.
2012
2013 2018-02-28 Jakub Jelinek <jakub@redhat.com>
2014
2015 * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
2016 inform_n.
2017
2018 2018-02-27 Martin Sebor <msebor@redhat.com>
2019
2020 * pt.c: Avoid including <string> directly.
2021
2022 2018-02-27 Martin Sebor <msebor@redhat.com>
2023
2024 PR c++/83871
2025 PR c++/83503
2026 * cp-tree.h (warn_spec_missing_attributes): New function.
2027 ((check_explicit_specialization): Add an argument. Call the above
2028 function.
2029 * decl.c (duplicate_decls): Avoid applying primary function template's
2030 attributes to its explicit specializations.
2031 cp/pt.c (warn_spec_missing_attributes): Define.
2032
2033 2018-02-27 HÃ¥kon Sandsmark <hsandsmark@gmail.com>
2034
2035 PR c++/71546 - lambda init-capture with qualified-id.
2036 * parser.c (cp_parser_lambda_introducer): Clear scope after
2037 each lambda capture.
2038
2039 2018-02-27 Nathan Sidwell <nathan@acm.org>
2040
2041 PR c++/84426
2042 * name-lookup.h (get_member_slot): Rename ...
2043 (find_member_slot): ... here.
2044 (add_member_slot): New.
2045 * name-lookup.c (member_vec_linear_search): No need to check for
2046 NULL slot.
2047 (get_member_slot): Rename ...
2048 (find_member_slot): ... here. Don't add slot for incomplete class.
2049 (add_member_slot): New.
2050 * class.c (add_method): Adjust get_member_slot rename. Bail out
2051 if push_class_level_binding fails. Create slot and grok
2052 properties once we're committed to insertion.
2053
2054 2018-02-27 Jason Merrill <jason@redhat.com>
2055
2056 PR c++/84489 - dependent default template argument
2057 * pt.c (type_unification_real): Handle early substitution failure.
2058
2059 2018-02-26 Jason Merrill <jason@redhat.com>
2060
2061 PR c++/84560 - ICE capturing multi-dimensional VLA.
2062 * tree.c (array_of_runtime_bound_p): False if the element is
2063 variably-modified.
2064
2065 PR c++/84441 - ICE with base initialized from ?:
2066 * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
2067
2068 PR c++/84520 - ICE with generic lambda in NSDMI.
2069 * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
2070 'this' in a generic lambda instantiation.
2071
2072 PR c++/84559 - ICE with constexpr VLA.
2073 * constexpr.c (ensure_literal_type_for_constexpr_object): Check
2074 for constexpr variable with VLA type.
2075
2076 2018-02-26 Jakub Jelinek <jakub@redhat.com>
2077
2078 PR c++/84558
2079 * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
2080 a valid constant initializer. Formatting fixes.
2081
2082 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
2083
2084 PR c++/84540
2085 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
2086 returning NULL_TREE.
2087 (apply_late_template_attributes): Likewise.
2088
2089 2018-02-26 Jakub Jelinek <jakub@redhat.com>
2090
2091 PR c++/84557
2092 * parser.c (cp_parser_omp_var_list_no_open): Only call
2093 cp_parser_lookup_name_simple on names satisfying identifier_p.
2094 (cp_parser_oacc_routine): Likewise.
2095
2096 2018-02-26 Jason Merrill <jason@redhat.com>
2097
2098 PR c++/84551 - ICE with concepts and -g.
2099 * parser.c (add_debug_begin_stmt): Do nothing in a concept.
2100
2101 2018-02-26 Marek Polacek <polacek@redhat.com>
2102
2103 PR c++/84325
2104 * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
2105 non-types.
2106
2107 2018-02-26 Jason Merrill <jason@redhat.com>
2108
2109 PR c++/84447 - ICE with deleted inherited ctor with default arg.
2110 * call.c (build_over_call): Handle deleted functions in one place.
2111
2112 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
2113
2114 PR c++/84533
2115 * decl.c (redeclaration_error_message): Don't try to use
2116 DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
2117
2118 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
2119
2120 * lambda.c (build_capture_proxy): Define static.
2121 * cp-tree.h (build_capture_proxy): Remove.
2122
2123 2018-02-26 Marek Polacek <polacek@redhat.com>
2124
2125 PR c++/84537
2126 * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
2127 if name is error node.
2128
2129 2018-02-25 Jason Merrill <jason@redhat.com>
2130
2131 PR c++/84015 - ICE with class deduction and auto template parm.
2132 * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
2133
2134 2018-02-24 Marek Polacek <polacek@redhat.com>
2135
2136 PR c++/83692
2137 * constexpr.c (maybe_constant_init_1): New function.
2138 (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
2139 (cxx_constant_init): New function.
2140 * cp-tree.h (cxx_constant_init): Declare.
2141 * typeck2.c (store_init_value): Call cxx_constant_init instead of
2142 cxx_constant_value. Move the maybe_constant_init call under an 'else'.
2143
2144 2018-02-22 Jason Merrill <jason@redhat.com>
2145
2146 PR c++/70468 - ICE with constructor delegation via typedef.
2147 * pt.c (tsubst_initializer_list): Check for other mem-initializers
2148 with constructor delegation.
2149
2150 2018-02-22 Jason Merrill <jason@redhat.com>
2151
2152 PR c++/84424 - ICE with constexpr and __builtin_shuffle.
2153 * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
2154 VECTOR_TYPE.
2155
2156 2018-02-22 Marek Polacek <polacek@redhat.com>
2157
2158 PR c++/84493
2159 * parser.c (cp_parser_braced_list): Use require_open instead of
2160 consume_open.
2161
2162 2018-02-21 Jason Merrill <jason@redhat.com>
2163
2164 PR c++/84454 - ICE with pack expansion in signature.
2165 * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
2166
2167 2018-02-20 Siddhesh Poyarekar <siddhesh@sourceware.org>
2168
2169 * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
2170 IF_STMT.
2171
2172 2018-02-20 Paolo Carlini <paolo.carlini@oracle.com>
2173
2174 PR c++/84446
2175 * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
2176 on error_mark_node.
2177
2178 2018-02-20 Jakub Jelinek <jakub@redhat.com>
2179
2180 PR c++/84445
2181 * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
2182 TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
2183
2184 PR c++/84449
2185 * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
2186 returns error_mark_node, return it immediately.
2187 (break_out_target_exprs): If cp_walk_tree with bot_manip returns
2188 error_mark_node, return error_mark_node.
2189
2190 PR c++/84455
2191 * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
2192 function_depth to avoid GC during finish_lambda_function.
2193
2194 2018-02-19 Jason Merrill <jason@redhat.com>
2195
2196 PR c++/84429 - ICE capturing VLA.
2197 * lambda.c (build_capture_proxy): Handle reference refs.
2198
2199 2018-02-19 Jakub Jelinek <jakub@redhat.com>
2200
2201 PR c++/84448
2202 * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
2203 either operand is error_mark_node, set current.lhs to that instead of
2204 creating a binary op with error_mark_node operands.
2205
2206 PR c++/84430
2207 * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
2208
2209 2018-02-19 Paolo Carlini <paolo.carlini@oracle.com>
2210
2211 PR c++/84348
2212 * decl.c (grokdeclarator): Early return error_mark_node upon
2213 ill-formed friend declaration.
2214
2215 2018-02-16 Marek Polacek <polacek@redhat.com>
2216 Jakub Jelinek <jakub@redhat.com>
2217
2218 PR c++/84192
2219 * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
2220 set *jump_target to anything if jump_target is NULL.
2221
2222 2018-02-16 Jason Merrill <jason@redhat.com>
2223
2224 PR c++/84151 - unnecessary volatile load with static member.
2225 * call.c (build_new_method_call_1): Avoid loading from a volatile
2226 lvalue used as the object argument for a static member function.
2227
2228 PR c++/81853 - using-directive and constexpr.
2229 * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
2230
2231 PR c++/84420 - ICE with structured binding in lambda.
2232 * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
2233
2234 PR c++/83835 - C++17 error with constructor ctors.
2235 * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
2236
2237 PR c++/82664 - ICE with reference to function template parm.
2238 * pt.c (convert_nontype_argument_function): Avoid obfuscationg
2239 NOP_EXPRs.
2240
2241 PR c++/82764 - C++17 ICE with empty base
2242 * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
2243
2244 2018-02-16 Jason Merrill <jason@redhat.com>
2245
2246 PR c++/84421 - type-dependent if constexpr
2247 * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
2248
2249 2018-02-16 Nathan Sidwell <nathan@acm.org>
2250
2251 Deprecate -ffriend-injection.
2252 * decl.c (cxx_init_decl_processing): Emit warning on option.
2253 * name-lookup.c (do_pushdecl): Emit warning if we push a visible
2254 friend.
2255
2256 2018-02-16 Paolo Carlini <paolo.carlini@oracle.com>
2257
2258 PR c++/82468
2259 * decl.c (check_special_function_return_type): Reject template
2260 template parameter in deduction guide.
2261
2262 2018-02-16 Nathan Sidwell <nathan@acm.org>
2263
2264 PR c++/84375
2265 * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
2266
2267 2018-02-15 Jason Merrill <jason@redhat.com>
2268
2269 PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
2270 * call.c (convert_like_real): Don't use the copy-list-initialization
2271 shortcut for ck_base.
2272
2273 PR c++/84045 - ICE with typedef and noexcept.
2274 * except.c (build_noexcept_spec): Use strip_typedefs_expr.
2275
2276 PR c++/84376 - ICE with omitted template arguments.
2277 * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
2278
2279 PR c++/84368 - wrong error with local variable in variadic lambda.
2280 * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
2281 local_specializations.
2282
2283 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
2284
2285 PR c++/84330
2286 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
2287 as first argument.
2288
2289 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
2290
2291 PR c++/84350
2292 * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
2293 init, early return.
2294
2295 2018-02-14 Nathan Sidwell <nathan@acm.org>
2296
2297 * decl2.c (mark_vtable_entries): Set input_location to decl's.
2298 (c_parse_final_cleanups): Restore input_location after emitting
2299 vtables.
2300
2301 2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
2302
2303 * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
2304 (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
2305 auto_deduction_context, tree, int): Add defaults.
2306 * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
2307 (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
2308 tsubst_flags_t argument.
2309 * init.c (build_new): Likewise.
2310
2311 2018-02-13 Jakub Jelinek <jakub@redhat.com>
2312
2313 PR c++/84364
2314 * typeck.c (check_return_expr): Don't emit -Weffc++ warning
2315 about return other than *this in assignment operators if
2316 retval is type dependent expression.
2317
2318 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com>
2319
2320 PR c++/84333
2321 * call.c (build_conditional_expr_1): Use cp_save_expr instead of
2322 save_expr for the G++ extension.
2323
2324 2018-02-13 Jason Merrill <jason@redhat.com>
2325
2326 PR c++/84080 - ICE with return type deduction and specialization.
2327 * pt.c (determine_specialization): Check uses_template_parms.
2328
2329 Fix more variadic capture issues.
2330 * pt.c (find_parameter_packs_r): Also look at explicit captures.
2331 (check_for_bare_parameter_packs): Check current_class_type for
2332 lambda context.
2333 (extract_locals_r): Handle seeing a full instantiation of a pack.
2334 (tsubst_pack_expansion): Likewise. Force lambda capture.
2335 * parser.c (cp_parser_lambda_introducer): Don't
2336 check_for_bare_parameter_packs.
2337
2338 PR c++/84338 - wrong variadic sizeof.
2339 * pt.c (argument_pack_select_arg): Like the macro, but look through
2340 a pack expansion.
2341 (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
2342 (extract_fnparm_pack): Do make_pack_expansion.
2343 (extract_locals_r): Do strip a pack expansion.
2344 * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
2345
2346 2018-02-12 Jakub Jelinek <jakub@redhat.com>
2347
2348 PR c++/84341
2349 * parser.c (cp_parser_binary_expression): Use build_min instead of
2350 build2_loc to build the no_toplevel_fold_p toplevel binary expression.
2351
2352 2018-02-12 Nathan Sidwell <nathan@acm.org>
2353
2354 PR c++/84263
2355 * parser.c (cp_parser_decltype): Push and pop
2356 deferring_access_checks. Reorganize to avoid goto.
2357
2358 2018-02-12 Richard Biener <rguenther@suse.de>
2359
2360 PR c++/84281
2361 * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
2362 uniform constructors and delay allocating them fully.
2363
2364 2018-02-09 Jason Merrill <jason@redhat.com>
2365
2366 PR c++/84036 - ICE with variadic capture.
2367 Handle variadic capture proxies more like non-variadic.
2368 * lambda.c (build_capture_proxy): Remove workaround.
2369 * pt.c (find_parameter_packs_r): The proxy is a pack.
2370 (instantiate_class_template_1): Remove dead lambda code.
2371 (extract_fnparm_pack): Don't make_pack_expansion.
2372 (extract_locals_r): Don't strip a pack expansion.
2373 (tsubst_pack_expansion): Handle proxy packs. Use
2374 PACK_EXPANSION_EXTRA_ARGS less.
2375 (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
2376 (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
2377 [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
2378 (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
2379 (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
2380
2381 2018-02-10 Jakub Jelinek <jakub@redhat.com>
2382
2383 PR sanitizer/83987
2384 * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
2385
2386 2018-02-09 Jason Merrill <jason@redhat.com>
2387
2388 PR c++/81917 - ICE with void_t and partial specialization.
2389 * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
2390 calling most_specialized_partial_spec.
2391
2392 2018-02-09 Nathan Sidwell <nathan@acm.org>
2393
2394 PR c/84293
2395 * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
2396 Pass expr location to strict_aliasing_warning.
2397
2398 2018-02-09 Jason Merrill <jason@redhat.com>
2399
2400 PR c++/84296 - ICE with qualified-id in template.
2401 PR c++/83714
2402 * pt.c (unknown_base_ref_p): New.
2403 (instantiation_dependent_scope_ref_p): Use it instead of
2404 any_dependent_bases_p.
2405
2406 2018-02-09 Marek Polacek <polacek@redhat.com>
2407 Jakub Jelinek <jakub@redhat.com>
2408
2409 PR c++/83659
2410 * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
2411 fold_indirect_ref_1, including poly_*int64. Verify first that
2412 tree_fits_poly_int64_p (op01). Formatting fixes.
2413
2414 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
2415
2416 * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
2417 * lambda.c (build_capture_proxy): Likewise.
2418 * search.c (field_access_p): Likewise.
2419 * semantics.c (omp_clause_decl, omp_privatize_field,
2420 finish_omp_clauses): Likewise.
2421
2422 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
2423
2424 PR c++/83806
2425 * typeck.c (decay_conversion): Use mark_rvalue_use for the special
2426 case of nullptr too.
2427
2428 2018-02-08 Nathan Sidwell <nathan@acm.org>
2429
2430 * class.c (finish_struct): Fix std:initializer_list diagnostic
2431 formatting.
2432
2433 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
2434
2435 PR c++/83204
2436 * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
2437
2438 2018-02-07 Jakub Jelinek <jakub@redhat.com>
2439
2440 PR c++/84082
2441 * parser.c (cp_parser_dot_deref_incomplete): New function.
2442 (cp_parser_postfix_dot_deref_expression): Use it.
2443
2444 2018-02-07 David Malcolm <dmalcolm@redhat.com>
2445
2446 PR c++/81610
2447 PR c++/80567
2448 * name-lookup.c (suggest_rid_p): New function.
2449 (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
2450 suggest_rid_p.
2451
2452 2018-02-07 Jason Merrill <jason@redhat.com>
2453
2454 PR c++/84182 - ICE with captured lambda
2455 PR c++/84181
2456 * pt.c (extract_locals_r, extract_local_specs): New.
2457 (tsubst_pack_expansion): Use them.
2458
2459 2018-02-07 Martin Liska <mliska@suse.cz>
2460
2461 PR c++/84059.
2462 * class.c (add_method): Append argument value.
2463 * cp-tree.h (maybe_version_functions): Add new argument.
2464 * decl.c (decls_match): Call it if a declaration does not
2465 have DECL_FUNCTION_VERSIONED.
2466 (maybe_version_functions): record argument is added.
2467
2468 2018-02-05 Marek Polacek <polacek@redhat.com>
2469
2470 * class.c: Remove unused global variables.
2471 (build_primary_vtable): Don't gather statistics.
2472 (print_class_statistics): Remove.
2473 * cp-tree.h (print_class_statistics): Remove.
2474 * tree.c (cxx_print_statistics): Don't call print_class_statistics.
2475
2476 2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
2477
2478 * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
2479 * constexpr.c (cx_check_missing_mem_inits): Likewise.
2480 * decl.c (next_initializable_field, find_decomp_class_base,
2481 cp_finish_decomp): Likewise.
2482 * typeck2.c (process_init_constructor_record): Likewise.
2483
2484 2018-02-02 Jason Merrill <jason@redhat.com>
2485
2486 PR c++/84181 - ICE with lambda parm in template argument.
2487 * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
2488
2489 2018-02-01 Jason Merrill <jason@redhat.com>
2490
2491 PR c++/84160 - ICE with nested variadic capture.
2492 * lambda.c (is_capture_proxy_with_ref): New.
2493 (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
2494 COMPONENT_REF.
2495 * expr.c (mark_use): Use is_capture_proxy_with_ref.
2496 * constexpr.c (potential_constant_expression_1): Likewise.
2497 * semantics.c (process_outer_var_ref): Likewise.
2498
2499 2018-02-01 Marek Polacek <polacek@redhat.com>
2500
2501 PR c++/84125
2502 * typeck.c (build_address): Relax the assert when
2503 processing_template_decl.
2504
2505 2018-02-01 Jason Merrill <jason@redhat.com>
2506
2507 PR c++/84126 - ICE with variadic generic lambda
2508 PR c++/84036
2509 PR c++/82249
2510 * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
2511 PACK_EXPANSION_EXTRA_ARGS.
2512
2513 2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
2514
2515 PR c++/83796
2516 * call.c (convert_like_real): If w're initializing from {} explicitly
2517 call abstract_virtuals_error_sfinae.
2518
2519 2018-01-31 Jason Merrill <jason@redhat.com>
2520 Jakub Jelinek <jakub@redhat.com>
2521
2522 PR c++/83993
2523 * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
2524 around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
2525 on ADDR_EXPR.
2526
2527 2018-01-31 Jakub Jelinek <jakub@redhat.com>
2528
2529 PR c++/83993
2530 * constexpr.c (diag_array_subscript): Emit different diagnostics
2531 if TYPE_DOMAIN (arraytype) is NULL.
2532 (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
2533 with NULL TYPE_DOMAIN use size_zero_node as nelts.
2534
2535 2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
2536
2537 PR c++/84092
2538 * semantics.c (finish_qualified_id_expr): When handling an
2539 UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
2540
2541 2018-01-31 Marek Polacek <polacek@redhat.com>
2542
2543 PR c++/84138
2544 * cp-gimplify.c (cp_fold): Check if X is an error node before
2545 calling useless_type_conversion_p.
2546
2547 2018-01-30 Jason Merrill <jason@redhat.com>
2548
2549 PR c++/84091 - ICE with local class in lambda in template.
2550 * decl2.c (determine_visibility): Look for outer containing template
2551 instantiation.
2552
2553 PR c++/84098 - ICE with lambda in template NSDMI.
2554 * pt.c (instantiate_class_template_1): Ignore more lambdas.
2555
2556 2018-01-29 Jason Merrill <jason@redhat.com>
2557
2558 PR c++/68810 - wrong location for reinterpret_cast error.
2559 * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
2560 !dofold.
2561
2562 2018-01-29 Marek Polacek <polacek@redhat.com>
2563
2564 PR c++/83996
2565 * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
2566 => fooarray[1] in offset_int.
2567
2568 2018-01-29 Jason Merrill <jason@redhat.com>
2569
2570 PR c++/83942 - wrong unused warning with static_cast.
2571 * cvt.c (ocp_convert): Call mark_rvalue_use.
2572
2573 2018-01-26 Jason Merrill <jason@redhat.com>
2574
2575 PR c++/83956 - wrong dtor error with anonymous union
2576 * method.c (walk_field_subobs): Variant members only affect
2577 deletedness.
2578 (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
2579
2580 PR c++/84036 - ICE with variadic capture.
2581 PR c++/82249
2582 * pt.c (tsubst_pack_expansion): When optimizing a simple
2583 substitution, pull a single pack expansion out of its pack.
2584
2585 PR c++/82514 - ICE with local class in generic lambda.
2586 * pt.c (regenerated_lambda_fn_p): Remove.
2587 (enclosing_instantiation_of): Don't use it.
2588 (tsubst_function_decl): Call enclosing_instantiation_of.
2589
2590 * pt.c (lookup_template_class_1): Add sanity check.
2591 * name-lookup.c (do_pushtag): Don't add closures to local_classes.
2592
2593 2018-01-25 Jakub Jelinek <jakub@redhat.com>
2594
2595 PR c++/84031
2596 * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore
2597 recursive calls that return ret.
2598 (cp_finish_decomp): Ignore unnamed bitfields.
2599
2600 2018-01-23 Jason Merrill <jason@redhat.com>
2601
2602 PR c++/82249 - wrong mismatched pack length error.
2603 * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
2604 unsubstituted function parameter pack.
2605
2606 2018-01-23 Paolo Carlini <paolo.carlini@oracle.com>
2607
2608 PR c++/83921
2609 * decl.c (check_for_uninitialized_const_var): Not static; add
2610 bool and tsubst_flags_t parameters; adjust to be used both in
2611 constexpr context and not.
2612 * constexpr.c (potential_constant_expression_1): Use the above.
2613 * cp-tree.h (check_for_uninitialized_const_var): Declare.
2614
2615 2018-01-23 Jason Merrill <jason@redhat.com>
2616
2617 PR c++/83947 - ICE with auto declarations.
2618 * pt.c (do_auto_deduction): Don't deduce from an auto decl.
2619 * decl.c (undeduced_auto_decl): Limit to vars and fns.
2620
2621 2018-01-23 David Malcolm <dmalcolm@redhat.com>
2622
2623 PR c++/83974
2624 * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
2625 for pointer to member function types.
2626
2627 2018-01-23 Jakub Jelinek <jakub@redhat.com>
2628
2629 PR sanitizer/83987
2630 * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
2631 DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
2632
2633 2018-01-23 Nathan Sidwell <nathan@acm.org>
2634
2635 PR c++/83988
2636 * pt.c (tsubst_baselink): Remove optype assert.
2637 * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
2638
2639 2018-01-23 Jakub Jelinek <jakub@redhat.com>
2640
2641 PR c++/83958
2642 * decl.c (cp_finish_decomp): Diagnose if reference structure binding
2643 refers to incomplete type.
2644
2645 2018-01-23 Nathan Sidwell <nathan@acm.org>
2646
2647 Deprecate ARM-era for scope handling
2648 * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
2649 (cxx_init_decl_processing): Deprecate flag_new_for_scope being
2650 cleared.
2651 * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
2652 cleanup handling.
2653 * semantics.c (begin_for_scope): Flag_new_for_scope is
2654 boolean-like.
2655 (finish_for_stmt, begin_range_for_stmt): Likewise.
2656
2657 2018-01-22 Jason Merrill <jason@redhat.com>
2658
2659 PR c++/83720
2660 * decl2.c (determine_visibility): Fix template_decl handling
2661 instead of blocking it.
2662
2663 PR c++/83720 - ICE with lambda and LTO.
2664 * decl2.c (determine_visibility): Clear template_decl for
2665 function-scope decls. Propagate anonymous linkage from containing
2666 function.
2667
2668 2018-01-22 Marek Polacek <polacek@redhat.com>
2669
2670 PR c++/81933
2671 * typeck2.c (split_nonconstant_init_1): Return false if we didn't
2672 split out anything.
2673
2674 2018-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
2675
2676 PR c++/83895
2677 * decl.c (grokdeclarator): Don't diagnose extra parens
2678 on typedefs.
2679
2680 2018-01-19 Jakub Jelinek <jakub@redhat.com>
2681
2682 PR c++/81167
2683 * call.c (joust): Use TREE_TYPE (source) if source is
2684 a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
2685
2686 PR c++/83919
2687 * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
2688 for direct enum init.
2689 * decl.c (reshape_init): Likewise.
2690
2691 2018-01-19 Marek Polacek <polacek@redhat.com>
2692
2693 * constexpr.c (fold_simple): Simplify.
2694
2695 2018-01-18 Jason Merrill <jason@redhat.com>
2696
2697 PR c++/83714
2698 * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
2699 * pt.c (instantiation_dependent_scope_ref_p): True if
2700 any_dependent_bases_p.
2701
2702 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
2703
2704 * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
2705 vs DECL_NONTRIVIALLY_INITIALIZED_P).
2706
2707 2018-01-18 Jason Merrill <jason@redhat.com>
2708
2709 PR c++/82461 - constexpr list-initialized member
2710 * constexpr.c (potential_constant_expression_1): Check
2711 TARGET_EXPR_DIRECT_INIT_P.
2712
2713 2018-01-18 Paolo Carlini <paolo.carlini@oracle.com>
2714
2715 PR c++/81013
2716 * decl.c (xref_basetypes): Early return upon error about derived
2717 union.
2718
2719 2018-01-18 Nathan Sidwell <nathan@acm.org>
2720
2721 PR c++/83160
2722 * cp-tree.h (mark_use): Declare.
2723 * expr.c (mark_use): Make extern.
2724 * call.c (direct_reference_binding): Set inner conv's
2725 rvaluedness_matches_p, if it is an identity.
2726 (convert_like_real): Mark lvalue or rvalue use for identity as
2727 rvaledness_matches_p demands.
2728
2729 2018-01-18 Jakub Jelinek <jakub@redhat.com>
2730
2731 PR c++/83824
2732 * parser.c (attr_chainon): New function.
2733 (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
2734 cp_parser_namespace_definition, cp_parser_init_declarator,
2735 cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
2736 cp_parser_gnu_attributes_opt): Use it.
2737 (cp_parser_member_declaration, cp_parser_objc_class_ivars,
2738 cp_parser_objc_struct_declaration): Likewise. Don't reset
2739 prefix_attributes if attributes is error_mark_node.
2740
2741 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
2742
2743 PR c++/78344
2744 * decl.c (grokdeclarator): Do not append the error_mark_node
2745 due to an erroneous optional attribute-specifier-seq.
2746
2747 2018-01-17 Jakub Jelinek <jakub@redhat.com>
2748
2749 PR c++/83897
2750 * cp-gimplify.c (cp_maybe_instrument_return): Handle
2751 CLEANUP_POINT_EXPR.
2752
2753 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com>
2754
2755 PR c++/81054
2756 * constexpr.c (ensure_literal_type_for_constexpr_object): Return
2757 error_mark_node when we give an error.
2758 * decl.c (cp_finish_decl): Use the latter.
2759
2760 2018-01-17 Nathan Sidwell <nathan@acm.org>
2761
2762 PR c++/83287
2763 * init.c (build_raw_new_expr): Scan list for lookups to keep.
2764
2765 2018-01-17 David Malcolm <dmalcolm@redhat.com>
2766
2767 PR c++/83814
2768 * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2769 the C++ part. If processing a template, call
2770 fold_non_dependent_expr rather than fully folding.
2771
2772 2018-01-17 Jason Merrill <jason@redhat.com>
2773
2774 PR c++/81067 - redundant NULL warning.
2775 * call.c (convert_like_real): Restore null_node handling.
2776
2777 2018-01-17 Jason Merrill <jason@redhat.com>
2778
2779 PR c++/81843 - ICE with variadic member template.
2780 PR c++/72801
2781 * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2782 template args.
2783
2784 2018-01-17 David Malcolm <dmalcolm@redhat.com>
2785
2786 PR c++/83799
2787 * pt.c (type_dependent_expression_p): Strip any location wrapper
2788 before testing tree codes.
2789 (selftest::test_type_dependent_expression_p): New function.
2790 (selftest::cp_pt_c_tests): Call it.
2791
2792 2018-01-17 Nathan Sidwell <nathan@acm.org>
2793
2794 PR c++/83739
2795 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2796 this not a final instantiation.
2797
2798 2018-01-16 Jason Merrill <jason@redhat.com>
2799
2800 PR c++/83714 - ICE checking return in template.
2801 * typeck.c (check_return_expr): Call build_non_dependent_expr.
2802
2803 2018-01-16 Jakub Jelinek <jakub@redhat.com>
2804
2805 PR c++/83817
2806 * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2807 is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2808 instead of CALL_FROM_THUNK_P.
2809
2810 PR c++/83825
2811 * name-lookup.c (member_vec_dedup): Return early if len is 0.
2812 (resort_type_member_vec, set_class_bindings,
2813 insert_late_enum_def_bindings): Use vec qsort method instead of
2814 calling qsort directly.
2815
2816 2018-01-15 Martin Sebor <msebor@redhat.com>
2817
2818 PR c++/83588
2819 * class.c (find_flexarrays): Make a record of multiple flexible array
2820 members.
2821
2822 2018-01-12 Jason Merrill <jason@redhat.com>
2823
2824 PR c++/83186 - ICE with static_cast of list-initialized temporary.
2825 * typeck.c (build_static_cast): Use build_non_dependent_expr.
2826
2827 2018-01-12 Nathan Sidwell <nathan@acm.org>
2828
2829 * cp-tree.h (mark_rvalue_use): Add parm name.
2830 * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2831 mark_rvalue_use.
2832 * call.c (convert_like_real): Fix formatting.
2833
2834 2018-01-11 Jason Merrill <jason@redhat.com>
2835
2836 PR c++/82728 - wrong -Wunused-but-set-variable
2837 PR c++/82799
2838 PR c++/83690
2839 * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2840 * decl.c (case_conversion): Likewise.
2841 * semantics.c (finish_static_assert): Call
2842 perform_implicit_conversion_flags.
2843
2844 2018-01-11 Nathan Sidwell <nathan@acm.org>
2845
2846 * method.c (enum mangling_flags): Delete long-dead enum.
2847
2848 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
2849
2850 * parser.c (cp_parser_std_attribute_spec): When
2851 token_pair::require_open / require_close return false simply
2852 return error_mark_node, avoid duplicate cp_parser_error about
2853 expected '(' / ')', respectively.
2854
2855 2018-01-10 David Malcolm <dmalcolm@redhat.com>
2856
2857 PR c++/43486
2858 * call.c (null_ptr_cst_p): Strip location wrappers when
2859 converting from '0' to a pointer type in C++11 onwards.
2860 (conversion_null_warnings): Replace comparison with null_node with
2861 call to null_node_p.
2862 (build_over_call): Likewise.
2863 * cp-gimplify.c (cp_fold): Remove the early bailout when
2864 processing_template_decl.
2865 * cp-lang.c (selftest::run_cp_tests): Call
2866 selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2867 * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2868 (selftest::run_cp_tests): Move decl to bottom of file.
2869 (null_node_p): New inline function.
2870 (selftest::cp_pt_c_tests): New decl.
2871 (selftest::cp_tree_c_tests): New decl.
2872 * cvt.c (build_expr_type_conversion): Replace comparison with
2873 null_node with call to null_node_p.
2874 * error.c (args_to_string): Likewise.
2875 * except.c (build_throw): Likewise.
2876 * mangle.c (write_expression): Skip location wrapper nodes.
2877 * parser.c (literal_integer_zerop): New function.
2878 (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2879 the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2880 param of cp_parser_parenthesized_expression_list. When calling
2881 warn_for_memset, replace integer_zerop calls with
2882 literal_integer_zerop, eliminating the double logical negation
2883 cast to bool. Eliminate the special-casing for CONST_DECL in
2884 favor of the fold_for_warn within warn_for_memset.
2885 (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2886 param, defaulting to false. Convert "expr" to a cp_expr, and call
2887 maybe_add_location_wrapper on it when wrap_locations_p is true.
2888 (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2889 the result for RID_ALIGNOF and RID_SIZEOF.
2890 (cp_parser_builtin_offsetof): Likewise.
2891 * pt.c: Include "selftest.h".
2892 (tsubst_copy): Handle location wrappers.
2893 (tsubst_copy_and_build): Likewise.
2894 (build_non_dependent_expr): Likewise.
2895 (selftest::test_build_non_dependent_expr): New function.
2896 (selftest::cp_pt_c_tests): New function.
2897 * tree.c: Include "selftest.h".
2898 (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2899 (selftest::test_lvalue_kind): New function.
2900 (selftest::cp_tree_c_tests): New function.
2901 * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2902 (cp_build_binary_op): Replace comparison with null_node with call
2903 to null_node_p.
2904 (build_address): Use location of operand when building address
2905 expression.
2906
2907 2018-01-10 Marek Polacek <polacek@redhat.com>
2908
2909 PR c++/82541
2910 * call.c (build_conditional_expr_1): Check complain before warning.
2911 * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2912 -Wduplicated-branches.
2913
2914 2018-01-10 Jakub Jelinek <jakub@redhat.com>
2915
2916 PR c++/81327
2917 * call.c (maybe_warn_class_memaccess): Add forward declaration.
2918 Change last argument from tree * to const vec<tree, va_gc> *, adjust
2919 args uses and check number of operands too. Don't strip away any
2920 nops. Use maybe_constant_value when looking for INTEGER_CST args.
2921 Deal with src argument not having pointer type. Check
2922 tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless
2923 test.
2924 (build_over_call): Call maybe_warn_class_memaccess here on the
2925 original arguments.
2926 (build_cxx_call): Rather than here on converted arguments.
2927
2928 2018-01-10 Paolo Carlini <paolo.carlini@oracle.com>
2929
2930 PR c++/81055
2931 * init.c (build_vec_init): Avoid building an INIT_EXPR with
2932 error_mark_node as second argument.
2933
2934 2018-01-09 Jakub Jelinek <jakub@redhat.com>
2935
2936 PR c++/83734
2937 * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2938 in STATEMENT_LIST. Remove unneeded assert.
2939
2940 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
2941 Alan Hayward <alan.hayward@arm.com>
2942 David Sherwood <david.sherwood@arm.com>
2943
2944 * constexpr.c (cxx_eval_array_reference): Handle polynomial
2945 VECTOR_CST_NELTS.
2946 (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2947 * call.c (build_conditional_expr_1): Likewise.
2948 * decl.c (cp_finish_decomp): Likewise.
2949 * mangle.c (write_type): Likewise.
2950 * typeck.c (structural_comptypes): Likewise.
2951 (cp_build_binary_op): Likewise.
2952 * typeck2.c (process_init_constructor_array): Likewise.
2953
2954 2018-01-03 Jakub Jelinek <jakub@redhat.com>
2955
2956 PR c++/83555
2957 * typeck.c (build_static_cast_1): For static casts to reference types,
2958 call build_base_path with flag_delete_null_pointer_checks as nonnull
2959 instead of always false. When -fsanitize=null, call
2960 ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2961 * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2962 call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2963
2964 2018-01-03 Nathan Sidwell <nathan@acm.org>
2965
2966 PR c++/83667
2967 * method.c (make_alias_for): Copy DECL_CONTEXT.
2968
2969 2018-01-03 Marek Polacek <polacek@redhat.com>
2970
2971 PR c++/83592
2972 * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2973
2974 2018-01-03 Jakub Jelinek <jakub@redhat.com>
2975
2976 PR preprocessor/83602
2977 * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2978 for builtin macros.
2979
2980 PR c++/83634
2981 * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2982 error_mark_node, return error_mark_node.
2983
2984 Update copyright years.
2985
2986 2018-01-02 Jakub Jelinek <jakub@redhat.com>
2987
2988 PR c++/83556
2989 * tree.c (replace_placeholders_r): Pass NULL as last argument to
2990 cp_walk_tree instead of d->pset. If non-TREE_CONSTANT and
2991 non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2992 to false and return.
2993 (replace_placeholders): Pass NULL instead of &pset as last argument
2994 to cp_walk_tree.
2995
2996 2018-01-02 Nathan Sidwell <nathan@acm.org>
2997
2998 * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2999 lval var.
3000 \f
3001 Copyright (C) 2018 Free Software Foundation, Inc.
3002
3003 Copying and distribution of this file, with or without modification,
3004 are permitted in any medium without royalty provided the copyright
3005 notice and this notice are preserved.