1 2017-10-04 Jakub Jelinek <jakub@redhat.com>
4 * error.c (dump_function_decl): If show_return, call dump_type_suffix
5 on the same return type dump_type_prefix has been called on.
7 2017-10-04 Jason Merrill <jason@redhat.com>
9 PR c++/81525 - broken handling of auto in generic lambda.
10 * pt.c (tsubst_decl) [VAR_DECL]: Use strip_innermost_template_args.
12 2017-10-04 Nathan Sidwell <nathan@acm.org>
14 * call.c (convert_arg_to_ellipsis): Correct comment about passing
17 2017-10-02 Richard Sandiford <richard.sandiford@linaro.org>
19 * constexpr.c (cxx_eval_store_expression): Use wi::to_widest
20 when comparing the array bounds with an ARRAY_REF index.
22 2017-09-30 Paolo Carlini <paolo.carlini@oracle.com>
25 * method.c (defaulted_late_check): Early return if the defaulted
26 declaration does not match the expected signature.
28 2017-09-29 Jakub Jelinek <jakub@redhat.com>
30 P0683R1 - default member initializers for bit-fields
31 * cp-tree.h (grokbitfield): Add INIT parameter.
32 * parser.c (cp_parser_constant_expression): Add STRICT_P argument,
33 if true, parse a conditional-expression rather than
34 assignment-expression.
35 (cp_parser_member_declaration): For C++11 and later pass true
36 as STRICT_P to cp_parser_constant_expression. Parse C++2A bitfield
37 NSDMIs. Adjust grokbitfield caller. Handle DECL_INITIAL also for
39 (cp_parser_objc_class_ivars): Adjust grokbitfield caller.
40 * class.c (check_field_decl): Recurse even for DECL_C_BIT_FIELDs.
41 (check_field_decls): Call check_field_decl even for DECL_C_BIT_FIELDs.
42 * decl2.c (grokbitfield): Add INIT parameter, pass it to
44 * pt.c (tsubst_decl): Handle DECL_INITIAL for all FIELD_DECLs, not
47 * class.c (check_bitfield_decl): Retrieve and clear width from
48 DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL.
49 (check_field_decls): Test DECL_BIT_FIELD_REPRESENTATIVE rather than
51 (remove_zero_width_bit_fields): Adjust comment.
52 * decl2.c (grokbitfield): Stash width into
53 DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL.
54 * pt.c (tsubst_decl): For DECL_C_BIT_FIELD, tsubst_expr
55 DECL_BIT_FIELD_REPRESENTATIVE rather than DECL_INITIAL for width.
57 * parser.c (cp_parser_member_declaration): Parse attributes before
58 colon of a bitfield in addition to after colon.
60 * Make-lang.in (check-c++-all): Test also c++2a.
62 2017-09-28 Jason Merrill <jason@redhat.com>
64 PR c++/56973, DR 696 - capture constant variables only as needed.
65 * expr.c (mark_use): Split out from mark_rvalue_use and
66 mark_lvalue_use. Handle lambda capture of constant variables.
67 (mark_lvalue_use_nonread): New.
68 * semantics.c (process_outer_var_ref): Don't capture a constant
69 variable until forced.
70 * pt.c (processing_nonlambda_template): New.
71 * call.c (build_this): Check it.
72 * decl2.c (grok_array_decl): Call mark_rvalue_use and
73 mark_lvalue_use_nonread.
74 * init.c (constant_value_1): Don't call mark_rvalue_use.
75 * typeck.c (build_static_cast): Handle lambda capture.
77 Use local_specializations to find capture proxies.
78 * cp-tree.h (DECL_CAPTURED_VARIABLE): New.
79 * lambda.c (build_capture_proxy): Set it.
80 (add_capture): Pass initializer to build_capture_proxy.
81 (start_lambda_function): Likewise.
82 (insert_capture_proxy): Use register_local_specialization.
83 (is_lambda_ignored_entity): Always ignore proxies.
84 * name-lookup.c (qualify_lookup): Don't check
85 is_lambda_ignored_entity if LOOKUP_HIDDEN is set.
86 * semantics.c (process_outer_var_ref): Use
87 retrieve_local_specialization.
88 * parser.c (cp_parser_lambda_body): Push local_specializations.
89 * pt.c (tsubst_expr): Pass LOOKUP_HIDDEN when looking for a proxy.
90 (tsubst_lambda_expr): Push local_specializations sooner.
91 (tsubst_copy_and_build): Don't register_local_specialization.
93 * call.c (build_special_member_call): Use the return value of
95 * decl.c (compute_array_index_type): Likewise.
96 * parser.c (cp_parser_oacc_wait_list): Likewise.
97 * lambda.c (is_normal_capture_proxy): Handle *this capture.
98 (add_capture): Clarify internal_error message.
100 2017-09-22 Eric Botcazou <ebotcazou@adacore.com>
103 * cp-objcp-common.c (cp_get_debug_type): Do only one lookup.
105 2017-09-22 Jakub Jelinek <jakub@redhat.com>
108 * tree.c (struct replace_placeholders_t): Add pset field.
109 (replace_placeholders_r): Call cp_walk_tree with d->pset as
110 last argument instead of NULL. Formatting fix.
111 (replace_placeholders): Add pset variable, add its address
112 into data. Pass &pset instead of NULL to cp_walk_tree.
114 2017-09-22 David Malcolm <dmalcolm@redhat.com>
116 * call.c (get_fndecl_argument_location): New function.
117 (convert_like_real): Use it when complaining about argument type
119 * cp-tree.h (struct cp_parameter_declarator): Add "loc" field.
120 * parser.c (make_parameter_declarator): Add "loc" param and use
121 it to initialize the new field.
122 (cp_parser_translation_unit): Add UNKNOWN_LOCATION for "loc" of
123 the "no_parameters" parameter.
124 (cp_parser_parameter_declaration_list): Set the location of the
125 result of grokdeclarator to be the parameter's loc, assuming no
127 (cp_parser_parameter_declaration): Generate a location for the
128 parameter and pass to make_parameter_declarator.
130 2017-09-20 Nathan Sidwell <nathan@acm.org>
132 * name-lookup.c (member_name_cmp): Use DECL_UID for final
135 2017-09-20 Jakub Jelinek <jakub@redhat.com>
137 P0409R2 - allow lambda capture [=, this]
138 * parser.c (cp_parser_lambda_introducer): For cxx2a don't pedwarn on
141 2017-09-18 Jason Merrill <jason@redhat.com>
143 PR c++/82069 - ICE with lambda in template
144 * semantics.c (process_outer_var_ref): Check uses_template_parms
145 instead of any_dependent_template_arguments_p.
147 2017-09-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
148 Paolo Carlini <paolo.carlini@oracle.com>
151 * decl2.c (finish_anon_union): Complain about "anonymous union with
152 no members" with a pedwarn.
154 2017-09-15 Bernd Edlinger <bernd.edlinger@hotmail.de>
156 * typeck.c (build_reinterpret_cast_1,
157 build_const_cast_1): Implement -Wcast-align=strict.
159 2017-09-15 Jakub Jelinek <jakub@redhat.com>
161 * decl.c (redeclaration_error_message): Use cxx17 instead of cxx1z,
162 adjust diagnostics refering to C++1z or -std=gnu++1z or -std=c++1z
163 to C++17 or -std=gnu++17 or -std=c++17. Adjust comments.
164 (cxx_init_decl_processing, next_initializable_field,
165 is_direct_enum_init, check_initializer, cp_finish_decl,
166 mark_inline_variable, grokdeclarator, grokparms, xref_basetypes,
167 finish_function): Likewise.
168 * cp-tree.h (DECL_INLINE_VAR_P): Likewise.
169 * pt.c (mark_template_parm, convert_nontype_argument,
170 instantiate_class_template_1, type_unification_real, unify,
171 get_partial_spec_bindings, dependent_type_p_r): Likewise.
172 * typeck.c (cp_build_unary_op): Likewise.
173 * constexpr.c (var_in_maybe_constexpr_fn): Likewise.
174 * call.c (build_user_type_conversion_1, build_over_call,
175 build_special_member_call): Likewise.
176 * lambda.c (begin_lambda_type): Likewise.
177 * typeck2.c (process_init_constructor_record): Likewise.
178 * class.c (build_base_field, finalize_literal_type_property,
179 explain_non_literal_class): Likewise.
180 * parser.c (cp_parser_diagnose_invalid_type_name,
181 cp_parser_primary_expression, cp_parser_lambda_introducer,
182 cp_parser_lambda_declarator_opt, cp_parser_selection_statement,
183 cp_convert_range_for, cp_parser_perform_range_for_lookup,
184 cp_parser_decomposition_declaration, cp_parser_linkage_specification,
185 cp_parser_static_assert, cp_parser_simple_type_specifier,
186 cp_parser_namespace_definition, cp_parser_using_declaration,
187 cp_parser_init_declarator, cp_parser_type_parameter_key,
188 cp_parser_exception_specification_opt, cp_parser_std_attribute_spec,
189 cp_parser_constructor_declarator_p): Likewise.
190 * mangle.c (struct globals): Rename need_cxx1z_warning to
192 (write_exception_spec, start_mangling, mangle_decl): Likewise.
193 * Make-lang.in (check-c++1z): Rename to check-c++17, depend on
195 (check-c++17): New goal. Use 17 instead of 1z.
196 (check-c++-all): Use 17 instead of 1z.
198 2017-09-14 Jakub Jelinek <jakub@redhat.com>
201 * cp-gimplify.c (omp_var_to_track): Look through references.
202 (omp_cxx_notice_variable): Likewise.
204 2017-09-13 Nathan Sidwell <nathan@acm.org>
206 Conv-op identifers not in identifier hash table
207 * lex.c (conv_type_hasher): Make member fns inline.
208 (make_conv_op_name): Directly clone conv_op_identifier.
210 Rename CLASSTYPE_METHOD_VEC to CLASSTYPE_MEMBER_VEC.
211 * cp-tree.h (struct lang_type): Rename methods to members.
212 (CLASSTYPE_METHOD_VEC): Rename to ...
213 (CLASSTYPE_MEMBER_VEC): ... this.
214 * name-lookup.h (get_method_slot): Rename to ...
215 (get_member_slot): ... this.
216 (resort_type_method_vec): Rename to ...
217 (resort_type_member_vec): ... this.
218 * class.c (add_method, warn_hidden): Adjust.
219 * search.c (dfs_locate_field_accessor_pre): Adjust.
220 * name-lookup.c (method_vec_binary_search): Rename to ...
221 (member_vec_binary_search): ... this and adjust.
222 (method_vec_linear_search): Rename to ...
223 (member_vec_linear_search): ... this and adjust.
224 (fields_linear_search, get_class_binding_direct): Adjust.
225 (get_method_slot): Rename to ...
226 (get_member_slot): ... this and adjust.
227 (method_name_slot): Rename to ...
228 (member_name_slot): ... this and adjust.
229 (resort_type_method_vec): Rename to ...
230 (resort_type_member_vec): ... this and adjust.
231 (method_vec_append_class_fields): Rename to ...
232 (member_vec_append_class_fields): ... this and adjust.
233 (method_vec_append_enum_values): Rename to ...
234 (member_vec_append_enum_values): ... this and adjust.
235 (method_vec_dedup): Rename to ...
236 (member_vec_dedup): ... this and adjust.
237 (set_class_bindings, insert_late_enum_def_bindings): Adjust.
239 2017-09-12 Paolo Carlini <paolo.carlini@oracle.com>
242 * decl.c (start_decl): Early return error_mark_node if duplicate_decls
243 returns it; avoid misleading error message.
245 2017-09-12 Nathan Sidwell <nathan@acm.org>
247 Kill CLASSTYPE_SORTED_FIELDS.
248 * cp-tree.h (struct lang_type): Lose sorted_fields member.
249 (CLASSTYPE_SORTED_FIELDS): Delete.
250 * name-lookup.h (set_class_bindings): Add EXTRA arg.
251 * name-lookup.c (fields_linear_search): New, broken out of ...
252 (lookup_field_1): ... here. Delete remainder of function.
253 (get_class_binding_direct): Reimplement without sorted_fields.
254 (get_class_binding): Rename TYPE arg to KLASS, for consistency.
255 (get_method_slot): Call set_class_binding when creating method_vec
257 (method_name_cmp): Order identically named slots.
258 (sorted_fields_type_new): Delete.
259 (field_vc_append_class_fields): Rename to ...
260 (method_vec_append_class_fields): ... here. Adjust.
261 (field_vec_append_enum_values): Renme to ...
262 (method_vec_append_enum_values): ... here. Adjust.
263 (method_vec_dedup): New.
264 (set_class_bindings): Reimplement.
265 (insert_late_enum_def_bindings): Reimplement.
267 * name-lookup.c (get_class_binding): Rename TYPE arg to KLASS for
269 (restort_data): Move later.
270 (method_name_cmp, resort_method_name_cmp): Simplify.
271 (resort_type_method_vec): Reformat.
273 2017-09-09 Jason Merrill <jason@redhat.com>
275 * constexpr.c (reduced_constant_expression_p): If
276 CONSTRUCTOR_NO_IMPLICIT_ZERO, check that all fields are initialized.
278 2017-09-09 Eric Botcazou <ebotcazou@adacore.com>
281 * cp-objcp-common.c (struct debug_type_hasher): New class.
282 (debug_type_hash): New variable.
283 (cp_get_debug_type): Associate the OFFSET_TYPEs with the types.
285 2017-09-08 Jason Merrill <jason@redhat.com>
287 PR c++/70029 - ICE with ref-qualifier and -flto
288 * tree.c (cxx_copy_lang_qualifiers): New.
289 * cp-tree.h: Declare it.
290 * cp-objcp-common.h: Define LANG_HOOKS_COPY_LANG_QUALIFIERS.
292 2017-09-06 Jason Merrill <jason@redhat.com>
294 PR c++/82053 - ICE with default argument in lambda in template
295 * pt.c (tsubst_arg_types): Substitute default arguments for lambdas
297 (retrieve_specialization): Use lambda_fn_in_template_p.
298 * cp-tree.h: Declare it.
300 PR c++/82070 - error with nested lambda capture
301 * pt.c (tsubst_expr) [DECL_EXPR]: Register capture proxies with
302 register_local_specialization.
304 2017-09-06 Nathan Sidwell <nathan@acm.org>
306 * name-lookup.h (lookup_field_1): Delete.
307 (get_class_binding_direct, get_class_binding): Add type_or_fns arg.
308 * name-lookup.c (lookup_field_1): make static
309 (method_vec_binary_search, method_vec_linear_search): New. Broken
311 (get_class_binding_direct): ... here. Add TYPE_OR_FNS argument.
312 Do complete search of this level.
313 (get_class_binding): Adjust.
314 * decl.c (reshape_init_class): Call get_class_binding.
315 * search.c (lookup_field_r): Move field searching into
316 get_class_binding_direct.
318 * class.c (warn_hidden): Don't barf on non-functions.
319 * decl2.c (check_classfn): Likewise. Check template match earlier.
321 * name-lookup.c (count_fields): Rename to ...
322 (count_class_fields): ... here. Take a class, don't count
324 (add_fields_to_record_type): Rename to ...
325 (field_vec_append_class_fields): ... here. Take a class, don't
326 add NULL-named fields.
327 (add_enum_fields_to_record_type): Rename to ...
328 (field_vec_append_enum_values): ... here.
329 (set_class_bindings): Adjust, assert we added expected number.
330 (insert_late_enum_def_bindings): Reimplement. Create vector if
331 there are now sufficient entries.
333 * name-lookup.h (lookup_fnfields_slot_nolazy,
334 lookup_fnfields_slot): Rename to ...
335 (get_class_binding_direct, get_class_binding): ... here.
336 * name-lookup.c (lookup_fnfields_slot_nolazy,
337 lookup_fnfields_slot): Rename to ...
338 (get_class_binding_direct, get_class_binding): ... here.
339 * cp-tree.h (CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Adjust.
340 * call.c (build_user_type_conversion_1): Adjust.
341 (has_trivial_copy_assign_p): Adjust.
342 (has_trivial_copy_p): Adjust.
343 * class.c (get_basefndecls) Adjust.
344 (vbase_has_user_provided_move_assign) Adjust.
345 (classtype_has_move_assign_or_move_ctor_p): Adjust.
346 (type_build_ctor_call, type_build_dtor_call): Adjust.
347 * decl.c (register_dtor_fn): Adjust.
348 * decl2.c (check_classfn): Adjust.
349 * pt.c (retrieve_specialization): Adjust.
350 (check_explicit_specialization): Adjust.
351 (do_class_deduction): Adjust.
352 * search.c (lookup_field_r): Adjust.
353 (look_for_overrides_here, lookup_conversions_r): Adjust.
354 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Adjust.
355 * tree.c (type_has_nontrivial_copy_init): Adjust.
356 * method.c (lazily_declare_fn): Adjust comment.
358 2017-09-05 Nathan Sidwell <nathan@acm.org>
360 * name-lookup.c (do_class_using_decl): Elide read-once temps.
361 Move declarations to initializations.
363 * class.c (add_method): Move slot search and insertion to ...
364 * name-lookup.c (get_method_slot): ... this new function.
365 (lookup_fnfields_slot_nolazy): Cope with NULL slot.
366 * name-lookup.h (get_method_slot): Declare.
367 * decl.c (cxx_init_decl_processinng): Give conv_op_marker a more
369 (grok_special_member_properties): Set
370 TYPE_HAS_CONVERSION. Expicitly look at DECL_NAME for specialness.
371 Improve TYPE_HAS_CONSTEXPR_CTOR setting.
373 * cp-tree.h (lang_decl_base): Rename template_conv_p to
375 (DECL_CONV_FN_P): Don't check NULL DECL_NAME.
376 (DECL_CONV_FN_TYPE): FN must be conv op.
377 (DECL_TEMPLATE_CONV_FN_P): Delete.
378 (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): Adjust.
379 * pt.c (push_template_decl_real): Delete DECL_TEMPLATE_CONV_FN_P
382 * class.c (unreverse_member_declarations): Remove extraneous if.
383 * pt.c (push_template_decl_real): Use string concatenation, not
384 \<newline>. Add %<..%>.
386 2017-09-05 Paolo Carlini <paolo.carlini@oracle.com>
389 * cp-tree.h (LABEL_DECL_CDTOR): Add and document.
390 * decl.c (start_preparsed_function): Set LABEL_DECL_CDTOR when
391 creating cdtor_label.
392 * constexpr.c (returns): Add the case of a constructor/destructor
393 returning via a LABEL_DECL_CDTOR label.
394 (cxx_eval_constant_expression, case [GOTO_EXPR]): Likewise.
396 2017-09-01 Nathan Sidwell <nathan@acm.org>
398 * cp-tree.h (resort_type_method_vec): Move declaration to ...
399 * name-lookup.h (resort_type_method_vec): ... here.
400 (set_class_bindings): Lose 2nd arg.
401 * class.c (finish_struct_1, finish_struct): Adjust
402 set_class_bindings call. Don't call finish_struct_methods.
403 (resort_data, method_name_cmp, resort_method_name_cmp,
404 resort_type_method_vec, finish_struct_methods): Move to ...
405 * name-lookup.c (resort_data, method_name_cmp,
406 resort_method_name_cmp, resort_type_method_vec): ... here.
407 (set_class_bindings): Lose fields arg. Swallow finish_struct_methods.
409 * class.c (finish_struct): Call set_class_bindings for the
412 * class.c (finish_struct_methods): Dont clear DECL_IN_AGGR_P here.
413 Don't call maybe_warn_about_overly_private_class here.
414 (warn_hidden): Cleanup declarations and comments.
415 (type_has_user_provided_constructor): No need to check
416 CLASSTYPE_METHOD_VEC.
417 (type_has_user_provided_or_explicit_constructor): Likewise.
418 (classtype_has_move_assign_or_move_ctor_p): Likewise.
419 (check_bases_and_members): Don't call finish_struct_methods here.
420 (finish_struct_1): Call finish_struct_methods and
421 set_class_bindings immediately after layout. Clear DECL_IN_AGGR_P
423 (finish_struct): For templates process USING_DECLS and clear
424 DECL_IN_AGGR_P before calling finish_struct_methods. Call
425 maybe_warn_about_overly_private_class here.
427 Revert 2017-08-28 Nathan Sidwell <nathan@acm.org>
428 Restore sorted_fields vector.
429 * cp-tree.h (lang_type): Restore sorted_fields vector.
430 (CLASSTYPE_SORTED_FIELDS): Restore.
431 (CLASSTYPE_BINDINGS): Delete.
432 * name-lookup.c (lookup_field_1): Restore binary search.
433 (sorted_fields_type_new, count_fields,
434 add_fields_to_record_type, add_enum_fields_to_record_type): Restore
435 (set_class_bindings): Revert.
436 (insert_late_enum_def_binding): Restore field_vec insertion.
438 2017-09-01 Jakub Jelinek <jakub@redhat.com>
441 * parser.c (cp_parser_omp_ordered): Handle -fopenmp-simd.
443 2017-09-01 Marek Polacek <polacek@redhat.com>
446 * typeck.c (cp_build_unary_op): Avoid re-entering reporting routines.
448 2017-08-30 Jason Merrill <jason@redhat.com>
450 PR c++/82029 - __PRETTY_FUNCTION__ in lambda in template
451 * pt.c (enclosing_instantiation_of, lambda_fn_in_template_p)
452 (regenerated_lambda_fn_p): New.
453 (tsubst_decl) [VAR_DECL]: Use enclosing_instantiation_of.
454 (tsubst_copy) [VAR_DECL]: Likewise.
456 PR c++/82030 - ICE inheriting from multiple lambdas
458 * call.c (compare_ics): Handle null candidate.
460 2017-08-30 Ville Voutilainen <ville.voutilainen@gmail.com>
462 Make taking the address of an overloaded function a non-deduced context
464 * pt.c (unify_overload_resolution_failure): Remove.
465 (unify_one_argument): Adjust.
467 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
468 Alan Hayward <alan.hayward@arm.com>
469 David Sherwood <david.sherwood@arm.com>
471 * typeck.c (cp_build_binary_op): Use SCALAR_TYPE_MODE.
473 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
474 Alan Hayward <alan.hayward@arm.com>
475 David Sherwood <david.sherwood@arm.com>
477 * cvt.c (cp_convert_to_pointer): Use SCALAR_INT_TYPE_MODE.
479 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
480 Alan Hayward <alan.hayward@arm.com>
481 David Sherwood <david.sherwood@arm.com>
483 * mangle.c (write_real_cst): Use SCALAR_FLOAT_TYPE_MODE
484 instead of TYPE_MODE.
486 2017-08-29 Jason Merrill <jason@redhat.com>
488 PR c++/81236 - ICE with template-id in generic lambda
489 * semantics.c (finish_id_expression): Remove special dependent case.
490 Avoid some later pieces when dependent.
491 (finish_qualified_id_expr): Do normal BASELINK handling in a
492 template. Always build a SCOPE_REF for a destructor BIT_NOT_EXPR.
493 (parsing_default_capturing_generic_lambda_in_template): Remove.
494 * parser.c (cp_parser_postfix_dot_deref_expression): Always give an
495 error for types that will never be complete.
496 * mangle.c (write_expression): Add sanity check.
497 * tree.c (build_qualified_name): Add sanity check.
498 (cp_walk_subtrees): Walk into the class context of a BASELINK.
499 * lambda.c (add_capture): Improve diagnostic for generic lambda
501 * call.c (build_new_method_call_1): Print the right constructor
504 Reimplement handling of lambdas in templates.
505 * cp-tree.h (LAMBDA_FUNCTION_P): Check DECL_DECLARES_FUNCTION_P.
506 * decl.c (start_preparsed_function): Call start_lambda_scope.
507 (finish_function): Call finish_lambda_scope.
508 * init.c (get_nsdmi): Call start/finish_lambda_scope.
509 * lambda.c (start_lambda_scope): Only ignore VAR_DECL in a function.
510 * parser.c (cp_parser_function_definition_after_declarator): Don't
511 call start/finish_lambda_scope.
512 * pt.c (retrieve_specialization): Ignore lambda functions in
514 (find_parameter_packs_r): Ignore capture proxies. Look into
516 (check_for_bare_parameter_packs): Allow bare packs in lambdas.
517 (tsubst_default_argument): Call start/finish_lambda_scope.
518 (tsubst_function_decl): Handle lambda functions differently.
519 (tsubst_template_decl): Likewise.
520 (tsubst_expr) [DECL_EXPR]: Skip closure declarations and capture
522 (tsubst_lambda_expr): Create a new closure rather than instantiate
523 the one from the template.
524 (tsubst_copy_and_build): Don't register a specialization of a pack.
525 (regenerate_decl_from_template): Call start/finish_lambda_scope.
526 (instantiate_decl): Remove special lambda function handling.
527 * semantics.c (process_outer_var_ref): Remove special generic lambda
528 handling. Don't implicitly capture in a lambda in a template. Look
529 for an existing proxy.
530 * class.c (current_nonlambda_class_type): Use decl_type_context.
532 * cp-tree.h (LAMBDA_EXPR_CLOSURE): Use TREE_TYPE.
533 (LAMBDA_EXPR_RETURN_TYPE): Remove.
534 (struct tree_lambda_expr): Remove closure and return_type fields.
535 * lambda.c (build_lambda_expr): Don't set LAMBDA_EXPR_RETURN_TYPE.
536 * pt.c (tsubst_copy_and_build): Likewise.
537 * parser.c (cp_parser_lambda_declarator_opt): Track return type.
538 (cp_parser_lambda_body): Adjust unspecified return type check.
539 * ptree.c (cxx_print_lambda_node): Don't print closure or
542 PR c++/80935 - wrong C++17 error with lambda
543 * decl.c (check_for_uninitialized_const_var): Check
544 is_instantiation_of_constexpr.
545 * constexpr.c (ensure_literal_type_for_constexpr_object): Check
546 is_instantiation_of_constexpr.
547 (potential_constant_expression_1): Check var_in_maybe_constexpr_fn.
549 * lambda.c (build_lambda_object): Check for error_mark_node.
550 * pt.c (make_pack_expansion): Set PACK_EXPANSION_LOCAL_P on the type
552 (tsubst_decl) [FUNCTION_DECL]: Set DECL_CONTEXT on the parameters.
553 (tsubst) [TEMPLATE_PARM_INDEX]: Check for error_mark_node.
555 PR c++/80767 - unnecessary instantiation of generic lambda
556 * call.c (convert_like_real): Call build_user_type_conversion_1 if
558 (add_conv_candidate): Build a ck_user conversion with no candidate.
560 Fix lambdas in template default argument of inherited ctor.
561 * method.c (synthesized_method_base_walk): Replace an inherited
562 template with its specialization.
563 (synthesized_method_walk): Make inheriting_ctor a pointer.
564 (maybe_explain_implicit_delete, explain_implicit_non_constexpr)
565 (deduce_inheriting_ctor, implicitly_declare_fn): Adjust.
567 * pt.c (build_deduction_guide): Set DECL_ABSTRACT_ORIGIN on the
568 template, not the function.
569 (template_guide_p): Adjust.
571 Support copying local_specializations.
572 * cp-tree.h (enum lss_policy): New.
573 (local_specialization_stack): Add policy parameter to default ctor.
574 * pt.c (local_specialization_stack): Copy local_specializations if
577 * constexpr.c (potential_constant_expression_1): Add "now" parm.
578 (is_constant_expression, require_constant_expression): New.
579 (is_static_init_expression, is_nondependent_constant_expression)
580 (is_nondependent_static_init_expression): Drop "potential".
581 * except.c (build_must_not_throw_expr): Do type conversion on
582 value-dependent argument.
583 * pt.c, semantics.c, typeck2.c: Use variants without "potential".
585 Instantiate default arguments/member initializers once.
586 * init.c (get_nsdmi): Remember NSDMI instantiations.
587 * parser.c (inject_this_parameter): Be more picky about
589 * pt.c (tsubst_copy): Simplify 'this' handling.
590 (tsubst_default_argument): Remember default argument
591 instantiations. Take parameter number.
592 (tsubst_default_arguments): Pass it.
593 * call.c (convert_default_arg): Likewise.
595 Fix default argument conversion failure and SFINAE.
596 * call.c (build_over_call): Check convert_default_arg result for
598 * parser.c (cp_parser_late_parsing_default_args): Remember
601 2017-08-28 Nathan Sidwell <nathan@acm.org>
603 * cp-tree.h (lang_type): Replace sorted_fields vector with
605 (CLASSTYPE_SORTED_FIELDS): Delete.
606 (CLASSTYPE_BINDINGS): New.
607 * decl.c (finish_enum_value_list): Swap args of
608 insert_late_enum_def_bindings.
609 * name-lookup.c (lookup_field_1): Replace binary search of sorted
610 fields with map->get.
611 (sorted_fields_type_new, count_fields,
612 add_fields_to_record_type, add_enum_fields_to_record_type): Delete.
613 (add_class_member, add_class_members): New.
614 (set_class_bindings): Create map and insert.
615 (insert_late_enum_def_binding): Swap parms. Use add_clasS_member.
616 * ptree.c (cxx_print_type): Delete sorted fields printing.
618 * cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields):
620 * name-lookup.h (set_class_bindings,
621 insert_late_enum_def_bindings): Declare.
622 * decl.c (finish_enum_value_list): Adjust for
623 insert_late_enum_def_bindings name change.
624 * class.c (finish_struct_1): Call set_class_bindings.
625 (count_fields, add_fields_to_record_type,
626 add_enum_fields_to_record_type, sorted_fields_type_new,
627 insert_into_classtype_sorted_fields,
628 insert_late_enum_def_into_classtype_sorted_fields): Move to ...
629 * name-lookup.h (count_fields, add_fields_to_record_type,
630 add_enum_fields_to_record_type, sorted_fields_type_new,
631 set_class_bindings, insert_late_enum_def_bindings): ... here.
633 2017-08-25 Nathan Sidwell <nathan@acm.org>
635 * class.c (method_name_cmp, resort_method_name_cmp): Methods
638 Conversion operators have a special name
639 * cp-tree.h (CPTI_CONV_OP_MARKER, CPTI_CONV_OP_IDENTIFIER): New.
640 (conv_op_marker, conv_op_identifier): New.
641 (CLASSTYPE_FIRST_CONVERSION_SLOT): Delete.
642 * decl.c (initialize_predefined_identifiers): Add
644 (cxx_init_decl_processing): Create conv_op_marker.
645 * decl2.c (check_classfn): Lookup conv-ops by name.
646 * class.c (add_method): Use conv_op_identifier & conv_op_marker.
647 (resort_type_method_vec): Don't skip conv-ops.
648 (finish_struct_methods, warn_hidden): Likewise.
649 * name-lookup.h (lookup_all_conversions): Delete.
650 * name-lookup.c (lookup_conversion_operator): Replace with ...
651 (extract_conversion_operator): ... this.
652 (lookup_fnfields_slot_nolazy): Find conv-ops by name.
653 (lookup_all_conversions): Delete.
654 * pt.c (check_explicit_specialization): Find conv-ops by name.
655 * search.c (lookup_conversions_r): Likewise.
657 2017-08-24 Nathan Sidwell <nathan@acm.org>
659 Conversion operators kept on single overload set
660 * class.c (add_method): Keep all conv-ops on one slot.
661 * name-lookup.c (lookup_conversion_operator): Pull the desired
662 conv op out of overload set.
663 * search.c (lookup_conversions_r): Lose template/non-template
665 (lookup_conversions): Likewise.
667 2017-08-23 Nathan Sidwell <nathan@acm.org>
669 * cp-tree.h (lookup_field_1, lookup_fnfields_slot,
670 lookup_fnfields_slot_nolazy, lookup_all_conversions): Move
672 * name-lookup.h (lookup_field_1, lookup_fnfields_slot,
673 lookup_fnfields_slot_nolazy, lookup_all_conversions): ... here.
674 * search.c (lookup_conversion_operator,
675 lookup_fnfields_slot_nolazy, lookup_field_1, lookup_fnfields_slot,
676 lookup_all_conversions): Move to ...
677 * name-lookup.c (lookup_conversion_operator,
678 lookup_fnfields_slot_nolazy, lookup_field_1, lookup_fnfields_slot,
679 lookup_all_conversions): ... here.
681 * semantics.c (finish_member_declaration): Move USING_DECL check
682 earlier. Always set C++ linkage. Commonize TYPE_FIELD and
683 template decl list insertion.
685 * cp-tree.h (maybe_version_functions): Declare.
686 * decl.c (decls_match): Break function versioning check to
687 separate function. Call it.
688 (maybe_version_functions): Broken out of decls_match.
689 * class.c (add_method): Use maybe_version_functions.
691 * cp-tree.h (print_search_statistics,
692 reinit_search_statistics): Don't declare.
693 * search.c (n_fields_searched, n_calls_lookup_field,
694 n_calls_lookup_field_1, n_calls_lookup_fnfields,
695 n_calls_lookup_fnfields_1, n_calls_get_base_type,
696 n_outer_fields_searched, n_contexts_saved): Delete.
697 (lookup_field_1, lookup_member,
698 lookup_fnfields_slot_nolazy): Remove stat gathering.
699 (print_search_statistics, reinit_search_statistics): Delete.
700 * tree.c (cxx_print_statistics): Don't print search stats.
702 2017-08-21 Nathan Sidwell <nathan@acm.org>
704 * search.c (lookup_field_r): Remove obsolete code for type-named
707 * search.c (lookup_field_1): Assert TYPE is a class and VFIELD
709 (lookup_field_fuzzy_info::fuzzy_lookup_fnfields): Delete.
710 (lookup_field_fuzzy_r): Adjust.
712 2017-08-21 David Malcolm <dmalcolm@redhat.com>
714 * call.c (build_over_call): Pass NULL for new parameter to
715 check_function_arguments.
716 * typeck.c (cp_build_function_call_vec): Likewise.
718 2017-08-21 Nathan Sidwell <nathan@acm.org>
721 * pt.c (instantiate_class_template_1):
722 BOUND_TEMPLATE_TEMPLATE_PARM is never friend-injected.
724 2017-08-18 David Malcolm <dmalcolm@redhat.com>
727 * name-lookup.c (maybe_suggest_missing_header): Convert return
728 type from void to bool; return true iff a suggestion was offered.
729 (suggest_alternative_in_explicit_scope): Move call to
730 maybe_suggest_missing_header to before use of best_match, and
731 return true if the former offers a suggestion.
733 2017-08-18 H.J. Lu <hongjiu.lu@intel.com>
736 * decl.c (duplicate_decls): Also merge DECL_WARN_IF_NOT_ALIGN.
737 * decl2.c (grokbitfield): Don't allow bit-field with
738 warn_if_not_aligned type.
740 2017-08-17 Nathan Sidwell <nathan@acm.org>
742 * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Remove stale comment.
743 * cp-tree.h (ENUM_TEMPLATE_INFO): Delete.
744 (TYPE_TEMPLATE_INFO): Simplify.
745 (SET_TYPE_TEMPLATE_INFO): Simplify.
747 * lex.c (maybe_add_lang_type_raw): BOUND_TEMPLATE_TEMPLATE_PARMs
748 don't need lang_type.
749 (cxx_make_type): Use maybe_add_lang_type_raw return value.
750 * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Don't rely on
753 * cp-tree.h (struct lang_type): Remove template_info field.
754 (CLASSTYPE_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
755 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
757 2017-08-14 Martin Sebor <msebor@redhat.com>
760 * error.c (cp_printer): Handle 'G'.
762 2017-08-11 Martin Liska <mliska@suse.cz>
764 * decl2.c (get_tls_init_fn): Replace ASM_OUTPUT_DEF with
765 TARGET_SUPPORTS_ALIASES.
766 (handle_tls_init): Likewise.
767 (note_mangling_alias): Likewise. Remove ATTRIBUTE_UNUSED for
769 * optimize.c (can_alias_cdtor): Likewise.
771 2017-08-11 Jason Merrill <jason@redhat.com>
773 PR c++/81671 - nullptr_t template parameter
774 * pt.c (convert_nontype_argument): Fix nullptr_t check.
776 2017-08-10 Jason Merrill <jason@redhat.com>
778 PR c++/81359 - Unparsed NSDMI error from SFINAE context.
779 * method.c (synthesized_method_walk): Don't diagnose lack of
782 PR c++/80452 - Core 1579, implicit move semantics on return/throw
783 * cp-tree.h (LOOKUP_PREFER_RVALUE): Now means that we've already
784 tentatively changed the lvalue to an rvalue.
785 * call.c (reference_binding): Remove LOOKUP_PREFER_RVALUE handling.
786 (build_over_call): If LOOKUP_PREFER_RVALUE, check that the first
787 parameter is an rvalue reference.
788 * except.c (build_throw): Do maybe-rvalue overload resolution twice.
789 * typeck.c (check_return_expr): Likewise.
791 2017-08-10 David Malcolm <dmalcolm@redhat.com>
793 * parser.c (cp_parser_error): Update for new param to
795 (class token_pair): New class.
796 (struct matching_paren_traits): New struct.
797 (matching_parens): New typedef.
798 (struct matching_brace_traits): New struct.
799 (matching_braces): New typedef.
800 (cp_parser_statement_expr): Convert explicit parsing of
801 CPP_OPEN_PAREN and CPP_CLOSE_PAREN to use of
802 class matching_parens, so that the pertinent open parenthesis is
803 highlighted when there are problems locating the close
805 (cp_parser_primary_expression): Likewise.
806 (cp_parser_compound_literal_p): Remove consumption of opening
808 (cp_parser_postfix_expression): Convert explicit parsing of
809 CPP_OPEN_PAREN and CPP_CLOSE_PAREN to use matching parens, as
810 above. Use it to consume the opening paren previously consumed by
811 cp_parser_compound_literal_p.
812 (cp_parser_parenthesized_expression_list): Likewise.
813 (cp_parser_unary_expression): Likewise.
814 (cp_parser_new_expression): Likewise.
815 (cp_parser_cast_expression): Likewise.
816 (cp_parser_builtin_offsetof): Likewise.
817 (cp_parser_trait_expr): Likewise.
818 (cp_parser_lambda_declarator_opt): Likewise.
819 (cp_parser_lambda_body): Likewise, for matching_braces.
820 (cp_parser_compound_statement): Likewise.
821 (cp_parser_selection_statement): Likewise, for matching_parens.
822 (cp_parser_iteration_statement): Likewise.
823 (cp_parser_already_scoped_statement): Likewise, for
825 (cp_parser_linkage_specification): Likewise.
826 (cp_parser_static_assert): Likewise, for matching_parens.
827 (cp_parser_decltype): Likewise.
828 (cp_parser_operator): Likewise.
829 (cp_parser_enum_specifier): Likewise.
830 (cp_parser_namespace_definition): Likewise.
831 (cp_parser_direct_declarator): Likewise.
832 (cp_parser_braced_list): Likewise.
833 (cp_parser_class_specifier_1): Likewise, for matching_braces.
834 (cp_parser_constant_initializer): Likewise.
835 (cp_parser_noexcept_specification_opt): Likewise, for
837 (cp_parser_exception_specification_opt): Likewise.
838 (cp_parser_handler): Likewise.
839 (cp_parser_asm_specification_opt): Likewise.
840 (cp_parser_asm_operand_list): Likewise.
841 (cp_parser_gnu_attributes_opt): Likewise.
842 (cp_parser_std_attribute_spec): Likewise.
843 (cp_parser_requirement_parameter_list): Likewise.
844 (cp_parser_requirement_body): Likewise, for matching_braces.
845 (cp_parser_compound_requirement): Likewise.
846 (cp_parser_template_introduction): Likewise.
847 (cp_parser_sizeof_pack): Likewise, for matching_parens.
848 (cp_parser_sizeof_operand): Likewise; use it to consume the
849 opening paren previously consumed by cp_parser_compound_literal_p.
850 (get_matching_symbol): New function.
851 (cp_parser_required_error): Add param "matching_location". Remove
852 calls to cp_parser_error, instead setting a non-NULL gmsgid, and
853 handling it if set by calling c_parse_error, potentially with a
854 secondary location if matching_location was set.
855 (cp_parser_require): Add param "matching_location", with a default
856 value of UNKNOWN_LOCATION.
857 (cp_parser_require_keyword): Update for new param of
858 cp_parser_required_error.
859 (cp_parser_objc_encode_expression): Update to class matching_parens
861 (cp_parser_objc_defs_expression): Likewise.
862 (cp_parser_objc_protocol_expression): Likewise.
863 (cp_parser_objc_selector_expression): Likewise.
864 (cp_parser_objc_typename): Likewise.
865 (cp_parser_objc_superclass_or_category): Likewise.
866 (cp_parser_objc_try_catch_finally_statement): Likewise.
867 (cp_parser_objc_synchronized_statement): Likewise.
868 (cp_parser_objc_at_property_declaration): Likewise.
869 (cp_parser_oacc_single_int_clause): Likewise.
870 (cp_parser_oacc_shape_clause): Likewise.
871 (cp_parser_omp_clause_collapse): Likewise.
872 (cp_parser_omp_clause_default): Likewise.
873 (cp_parser_omp_clause_final): Likewise.
874 (cp_parser_omp_clause_if): Likewise.
875 (cp_parser_omp_clause_num_threads): Likewise.
876 (cp_parser_omp_clause_num_tasks): Likewise.
877 (cp_parser_omp_clause_grainsize): Likewise.
878 (cp_parser_omp_clause_priority): Likewise.
879 (cp_parser_omp_clause_hint): Likewise.
880 (cp_parser_omp_clause_defaultmap): Likewise.
881 (cp_parser_omp_clause_ordered): Likewise.
882 (cp_parser_omp_clause_schedule): Likewise.
883 (cp_parser_omp_clause_num_teams): Likewise.
884 (cp_parser_omp_clause_thread_limit): Likewise.
885 (cp_parser_omp_clause_aligned): Likewise.
886 (cp_parser_omp_clause_linear): Likewise.
887 (cp_parser_omp_clause_safelen): Likewise.
888 (cp_parser_omp_clause_simdlen): Likewise.
889 (cp_parser_omp_clause_depend): Likewise.
890 (cp_parser_omp_clause_device): Likewise.
891 (cp_parser_omp_clause_dist_schedule): Likewise.
892 (cp_parser_oacc_clause_async): Likewise.
893 (cp_parser_omp_critical): Likewise.
894 (cp_parser_omp_for_loop): Likewise.
895 (cp_parser_omp_sections_scope): Likewise.
896 (cp_parser_omp_declare_reduction_exprs): Likewise.
897 Update for new param to cp_parser_required_error.
898 (cp_parser_oacc_routine): Likewise.
899 (cp_parser_transaction_expression): Likewise.
900 (cp_parser_cilk_simd_vectorlength): Likewise.
902 2017-08-09 Jason Merrill <jason@redhat.com>
904 PR c++/81525 - wrong constant value with generic lambda
905 * pt.c (tsubst_decl) [VAR_DECL]: Avoid clobbering auto.
906 (tsubst_copy) [VAR_DECL]: Handle auto.
908 PR c++/81359 - Unparsed NSDMI error from SFINAE context.
909 * init.c (get_nsdmi): Add complain parm.
910 * typeck2.c (digest_nsdmi_init): Add complain parm.
911 (process_init_constructor_record): Pass complain to get_nsdmi.
912 * pt.c (maybe_instantiate_noexcept): Add complain parm, return bool.
913 * method.c (get_defaulted_eh_spec): Add complain parm. Pass it into
914 synthesized_method_walk.
915 (synthesized_method_walk): Adjust.
916 (walk_field_subobs): Pass complain to get_nsdmi.
917 (defaulted_late_check): Skip other checks if deleted.
918 * decl2.c (mark_used): Pass complain to maybe_instantiate_noexcept.
919 * call.c (build_aggr_conv): Pass complain to get_nsdmi.
920 * parser.c (defarg_location): New.
921 * error.c (location_of): Use it.
923 2017-08-09 Marek Polacek <polacek@redhat.com>
925 * parser.c (cp_parser_perform_range_for_lookup): Use false instead of 0.
926 * typeck.c (build_binary_op): Change the type of a parameter to bool.
927 (cp_truthvalue_conversion): Use true instead of 1.
929 2017-08-08 Marek Polacek <polacek@redhat.com>
932 * cp-gimplify.c (cp_fold): If folding exposed a branch of
933 a COND_EXPR, convert it to the original type of the COND_EXPR, if
936 2017-08-08 Martin Liska <mliska@suse.cz>
938 * call.c: Include header files.
939 * cp-gimplify.c: Likewise.
940 * cp-ubsan.c: Likewise.
943 * search.c: Likewise.
944 * semantics.c: Likewise.
945 * typeck.c: Likewise.
947 2017-08-07 Martin Liska <mliska@suse.cz>
949 * parser.c (cp_parser_gnu_attribute_list): Canonicalize name of an
951 (cp_parser_std_attribute): Likewise.
952 * tree.c: Add new include.
954 2017-08-04 Paolo Carlini <paolo.carlini@oracle.com>
957 * pt.c (do_class_deduction): Handle the case of no viable implicit
958 deduction guides; simplify the code generating implicit deduction
961 2017-08-03 Paolo Carlini <paolo.carlini@oracle.com>
964 * typeck.c (build_x_unary_op): Avoid pretty-printing constructor /
965 destructor as expressions.
967 2017-08-02 Jakub Jelinek <jakub@redhat.com>
970 * call.c (build_user_type_conversion_1): Only call
971 lookup_fnfields_slot if totype is CLASS_TYPE_P.
973 2017-07-31 Jason Merrill <jason@redhat.com>
975 * decl.c (declare_global_var): Set DECL_CONTEXT.
977 2017-07-31 Jan Hubicka <hubicka@ucw.cz>
978 Martin Liska <mliska@suse.cz>
980 * pt.c (tsubst_copy): Copy PREDICT_EXPR.
981 * semantics.c (finish_goto_stmt): Build gimple predict
983 * constexpr.c (potential_constant_expression_1): Handle
986 2017-07-31 Martin Liska <mliska@suse.cz>
989 * cp-gimplify.c (cp_genericize): Guard condition with flag_sanitize_p
990 also with current_function_decl non-null equality.
991 * cp-ubsan.c (cp_ubsan_instrument_vptr_p): Likewise.
992 * decl.c (compute_array_index_type): Likewise.
993 * init.c (finish_length_check): Likewise.
994 * typeck.c (cp_build_binary_op): Likewise.
996 2017-07-29 Jakub Jelinek <jakub@redhat.com>
998 * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
999 DW_AT_export_symbols.
1000 * name-lookup.c (emit_debug_info_using_namespace): Add IMPLICIT
1001 argument, pass it through to the debug hook.
1002 (finish_namespace_using_directive): Adjust
1003 emit_debug_info_using_namespace caller.
1004 (push_namespace): Likewise. Call it after setting
1005 DECL_NAMESPACE_INLINE_P.
1006 (cp_emit_debug_info_for_using): Pass false as new argument to
1007 the imported_module_or_decl debug hook.
1009 2017-07-28 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
1011 * lex.c (copy_decl): Adjust.
1012 (copy_type): Likewise.
1014 2017-07-26 Paolo Carlini <paolo.carlini@oracle.com>
1017 * lambda.c (add_capture): Early return if we cannot capture by
1020 2017-07-26 Jason Merrill <jason@redhat.com>
1022 P0702R1 - List deduction of vector.
1023 * pt.c (do_class_deduction): Special-case deduction from a single
1024 element of related type.
1026 2017-07-26 Leonid Koppel <lkoppel@uwaterloo.ca>
1028 PR c++/67054 - Inherited ctor with non-default-constructible members
1029 * method.c (walk_field_subobs) Consider member initializers (NSDMIs)
1030 when deducing an inheriting constructor.
1032 2017-07-21 Nathan Sidwell <nathan@acm.org>
1034 * search.c (lookup_conversion_operator): Return overloads.
1035 (lookup_fnfields_idx_nolazy): Absorb into ...
1036 (lookup_fnfields_slot_nolaxy): ... here.
1037 (lookup_fnfields_1): Absorb into ...
1038 (lookup_fnfields_slot): ... here.
1040 Remove special CDtor METHOD_VEC slots.
1041 * cp-tree.h (CLASSTYPE_CONSTRUCTOR_SLOT,
1042 CLASSTYPE_DESTRUCTOR_SLOT): Delete.
1043 (CLASSTYPE_CONSTRUCTORS): Use lookup_fnfields_slot_nolazy.
1044 (CLASSTYPE_DESTRUCTOR): Likewise.
1045 * class (add_method): Don't use special cdtor slots.
1046 * search.c (lookup_fnfields_idx_nolazy): Likewise.
1047 (look_for_overrides_here): Use lookup_fnfields_slot.
1048 * semantics (classtype_has_nothrow_assign_or_copy_p): Likewise.
1050 * call.c (add_candidates): Move decls to initialization. Don't
1053 2017-07-20 Nathan Sidwell <nathan@acm.org>
1055 Remove TYPE_METHODS.
1056 * class.c (maybe_warn_about_overly_private_class,
1057 finish_struct_methods, one_inheriting_sig, count_fields,
1058 add_fields_to_record_type, check_field_decls, check_methods,
1059 clone_function_decl, set_method_tm_attributes,
1060 finalize_literal_type_property, check_bases_and_members,
1061 create_vtable_ptr, determine_key_method,
1062 unreverse_member_declarations, finish_struct,
1063 add_vcall_offset_vtbl_entries_1): Member fns are on TYPE_FIELDS.
1064 * decl.c (fixup_anonymous_aggr): Likewise.
1065 * decl2.c (reset_type_linkage_2): Likewise.
1066 * method.c (after_nsdmi_defaulted_late_checks,
1067 lazily_declare_fn): Likewise.
1068 * optimize.c (maybe_thunk_body, maybe_clone_body): Likewise.
1069 * pt.c (instantiate_class_template_1, tsubst_expr,
1070 do_type_instantiation, instantiate_pending_templates): Likewise.
1071 * search.c (lookup_field_1): Likewise.
1072 * semantics.c (finish_member_declaration,
1073 finish_omp_declare_simd_methods): Likewise.
1075 2017-07-19 Nathan Sidwell <nathan@acm.org>
1077 * class.c (add_implicitly_declared_members): Use
1078 classtype_has_move_assign_or_move_ctor_p.
1079 (classtype_has_move_assign_or_move_ctor,
1080 classtype_has_user_move_assign_or_move_ctor_p): Merge into ...
1081 (classtype_has_move_assign_or_move_ctor_p): ... this new function.
1082 * cp-tree.h (classtype_has_user_move_assign_or_move_ctor_p):
1084 (classtype_has_move_assign_or_move_ctor_p): ... this.
1085 * method.c (maybe_explain_implicit_delete, lazily_declare_fn): Adjust.
1086 * tree.c (type_has_nontrivial_copy_init): Adjust.
1088 * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS,
1089 PACK_EXPANSION_EXTRA_ARGS): Use TYPE_{MIN,MAX}_VALUE_RAW.
1091 2017-07-18 Nathan Sidwell <nathan@acm.org>
1093 * cp-array-notation.c (build_array_notation_ref): Use
1094 TYPE_{MIN,MAX}_VALUE.
1096 * class.c (classtype_has_move_assign_or_move_ctor): Declare.
1097 (add_implicitly_declared_members): Use it.
1098 (type_has_move_constructor, type_has_move_assign): Merge into ...
1099 (classtype_has_move_assign_or_move_ctor): ... this new function.
1100 * cp-tree.h (type_has_move_constructor, type_has_move_assign): Delete.
1102 2017-07-17 Volker Reichelt <v.reichelt@netcologne.de>
1104 * parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for
1105 friend outside class and obsolete auto as storage-class-specifier.
1107 2017-07-17 Nathan Sidwell <nathan@acm.org>
1109 * class.c (maybe_warn_about_overly_private_class): Ignore public
1112 * class.c (type_has_user_declared_move_constructor,
1113 type_has_user_declared_move_assign): Combine into ...
1114 (classtype_has_user_move_assign_or_move_ctor_p): ... this new function.
1115 * cp-tree.h (type_has_user_declared_move_constructor,
1116 type_has_user_declared_move_assign): Combine into ...
1117 (classtype_has_user_move_assign_or_move_ctor_p): ... this. Declare.
1118 * method.c (maybe_explain_implicit_delete): Use it.
1119 (lazily_declare_fn): Use it.
1120 * tree.c (type_has_nontrivial_copy_init): Use it.
1122 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Clarify
1123 semantics, simplify implementation.
1125 2017-07-16 Volker Reichelt <v.reichelt@netcologne.de>
1127 * parser.c (cp_parser_cast_expression): Use %q#T instead of %qT
1128 in old-style cast diagnostic.
1129 * typeck.c (maybe_warn_about_useless_cast): Use %q#T instead of %qT
1130 in useless cast diagnostic.
1131 * error.c (type_to_string): Remove enum special handling.
1133 2017-07-14 David Malcolm <dmalcolm@redhat.com>
1135 * name-lookup.c (get_std_name_hint): Add '<' and '>' around
1137 (maybe_suggest_missing_header): Update for addition of '<' and '>'
1138 to above. Provide a fix-it hint.
1139 * pt.c: Include "gcc-rich-location.h"
1140 (listify): Attempt to add fix-it hint for missing
1141 #include <initializer_list>.
1142 * rtti.c: Include "gcc-rich-location.h".
1143 (typeid_ok_p): Attempt to add fix-it hint for missing
1144 #include <typeinfo>.
1146 2017-07-12 Jason Merrill <jason@redhat.com>
1148 P0512R0 - Deduction from an initializer list.
1149 * pt.c (do_class_deduction): Do list deduction in two phases.
1151 2017-07-12 Nathan Sidwell <nathan@acm.org>
1153 * cp-tree.h (DECL_CONSTRUCTOR_P, DECL_MAYBE_IN_CHARGE_CONSTRUCTOR,
1154 DECL_DESTRUCTOR_P, DECL_MAYBE_IN_CHARGE_DESTRCTOR): Look at
1156 * decl.c (grokfndecl): Set DECL_CXX_CONSTRUCTOR and
1157 DECL_CXX_DESTRUCTOR explicitly.
1158 * decl2.c (grokclassfn): Likewise.
1159 * friend.c (do_friend): Likewise.
1160 * method.c (make_thunk, make_alias_for,
1161 implicitly_declare_fn): Likewise.
1163 2017-07-11 Jason Merrill <jason@redhat.com>
1166 * decl.c (grokparms): Downgrade error about array of unknown bound
1167 to pedwarn and disable it for C++17.
1169 2017-07-11 Nathan Sidwell <nathan@acm.org>
1171 * decl2.c (reset_type_linkage_2): Dont't change ctor name.
1173 2017-07-10 Martin Sebor <msebor@redhat.com>
1175 * cp-tree.h (cp_operator_id, cp_assignment_operator_id): Document.
1177 2017-07-06 Jason Merrill <jason@redhat.com>
1179 PR c++/81204 - parse error with dependent template-name
1180 * parser.c (cp_parser_lookup_name): Revert previous change.
1182 2017-07-06 David Malcolm <dmalcolm@redhat.com>
1184 * cp-lang.c (LANG_HOOKS_RUN_LANG_SELFTESTS): Define as
1185 selftest::run_cp_tests.
1186 (selftest::run_cp_tests): New function.
1187 * cp-tree.h (selftest::run_cp_tests): New decl.
1189 2017-07-04 Jakub Jelinek <jakub@redhat.com>
1191 * parser.c (cp_parser_decomposition_declaration): Replace
1192 decomposition declaration with structured binding in diagnostics.
1193 * decl.c (cp_finish_decomp): Likewise.
1194 (grokdeclarator): Likewise.
1197 * parser.c (cp_parser_decomposition_declaration): Diagnose invalid
1198 forms of structured binding initializers.
1200 2017-07-03 Paolo Carlini <paolo.carlini@oracle.com>
1203 * decl.c (grokdeclarator): Move checks on function return type after
1204 the splice_late_return_type call; if declspecs->locations[ds_type_spec]
1205 is UNKNOWN_LOCATION fall back to input_location.
1207 2017-07-03 David Malcolm <dmalcolm@redhat.com>
1209 * parser.c (enum required_token): Fix spelling of
1210 RT_INTERATION to RT_ITERATION.
1211 (cp_parser_iteration_statement): Likewise.
1212 (cp_parser_required_error): Likewise.
1214 2017-06-30 Jason Merrill <jason@redhat.com>
1216 PR c++/81257 - ICE with invalid ::template.
1217 PR c++/54769 - wrong lookup of dependent template-name.
1218 * parser.c (cp_parser_template_name): Revert part of last change.
1220 2017-06-30 Nathan Sidwell <nathan@acm.org>
1222 * config-lang.in (gtfiles): Add cp/lex.c.
1223 * cp-tree.h (mangle_convop_name_for_type): Rename ...
1224 (make_conv_op_name): ... here. Move to lex.
1225 * lambda.c (maybe_add_lambda_conv_op): Update.
1226 * parser.c (cp_parser_conversion_function_id): Update.
1227 * pt.c (tsubst_decl, tsubst_baselink, tsubst_copy,
1228 tsubst_copy_and_build): Update.
1229 * semantics.c (apply_deduced_return_type): Update.
1230 * mangle.c (conv_type_hasher, conv_type_names,
1231 mangle_conv_op_name_for_type): Move to ...
1232 * lex.c (conv_type_hasher, conv_type_names, make_convop_name):
1235 2017-06-30 David Malcolm <dmalcolm@redhat.com>
1238 * parser.c (cp_parser_postfix_expression): Construct a location
1239 for typeid expressions.
1241 2017-06-30 Nathan Sidwell <nathan@acm.org>
1243 * cp-tree.h (lookup_fnfields_1, class_method_index_for_fn): Don't
1245 (lookup_all_conversions): Declare.
1246 * class.c (get_basefndecls): Use lookup_fnfields_slot.
1247 * decl.c (register_dtor_fn): Use lookup_fnfields_slot.
1248 * decl2.c (check_class_fn): Use lookup_fnfields_slot. Rework
1250 * pt.c (retrieve_specialization): Use lookup_fnfields_slot.
1251 (check_explicit_specialization): Use lookup_fnfields_slot_nolazy,
1252 lookup_all_conversions.
1253 * search.c (lookup_fnfields_1): Make static.
1254 (lookup_all_conversions): New.
1255 (class_method_index_for_fn): Delete.
1256 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
1257 lookup_fnfields_slot.
1259 * call.c (build_new_method_call_1): Use constructo_name to get
1260 ctor name. Move argument processing earlier to merge cdtor
1262 * decl.c (grokfndecl): Cdtors have special names.
1263 * method.c (implicitly_declare_fn): Likewise. Simplify flag setting.
1264 * pt.c (check_explicit_specialization): Cdtor name is already
1266 * search.c (class_method_index_for_fn): Likewise.
1269 * name-lookup.c (do_pushdecl): Reset IDENTIFIER_TYPE when finding
1270 a matching TYPE_DECL.
1272 2017-06-29 Paolo Carlini <paolo.carlini@oracle.com>
1274 * class.c (add_method): Change pair of errors to error + inform.
1275 (handle_using_decl): Likewise.
1277 2017-06-29 Jason Merrill <jason@redhat.com>
1279 * constexpr.c, error.c, tree.c: Remove WITH_CLEANUP_EXPR handling.
1281 PR c++/81180 - ICE with C++17 deduction of member class template.
1282 * pt.c (build_deduction_guide): Correct member template handling.
1284 PR c++/81188 - matching decltype of member function call.
1285 * tree.c (cp_tree_equal): Remove COMPONENT_REF special case.
1287 2017-06-29 Nathan Sidwell <nathan@acm.org>
1290 * parser.c (cp_parser_namespace_definition): Immediately close the
1291 namespace if there's no open-brace.
1292 * name-lookup.c (do_pushdecl): Reset OLD when pushing into new
1295 2017-06-29 Jason Merrill <jason@redhat.com>
1297 PR c++/81164 - ICE with invalid inherited constructor.
1298 * search.c (binfo_direct_p): New.
1299 * name-lookup.c (do_class_using_decl): Use it.
1301 2017-06-29 Nathan Sidwell <nathan@acm.org>
1303 * cp-tree.h (THIS_NAME, IN_CHARGE_NAME, VTBL_PTR_TYPE,
1304 VTABLE_DELTA_NAME, VTABLE_PFN_NAME): Delete.
1305 * decl.c (initialize_predefined_identifiers): Name cdtor special
1306 names consistently. Use literals for above deleted defines.
1307 (cxx_init_decl_processing): Use literal for vtbl_ptr_type name,
1309 * lex.c (maybe_add_lang_type_raw): Exit early, rather than use a
1312 * call.c (check_dtor_name): Use constructor_name for enums too.
1313 (build_new_method_call_1): Use constructor_name for cdtors and
1315 * class.c (build_self_reference): Use TYPE_NAME to get name of
1317 * name-lookup (constructor_name): Use DECL_NAME directly.
1318 (constructor_name_p): Reimplement.
1319 (push_class_level_binding_1): Use TYPE_NAME directly.
1321 * class.c (finish_struct): Use OVL_P.
1322 (get_vfield_name): Measure constructor_name length.
1323 * cp-tree.h (SET_CLASS_TYPE_P): Add RECORD_OR_UNION_CHECK.
1324 (NON_UNION_CLASS_TYPE_P): Check RECORD_TYPE up front.
1325 * cxx-pretty-print.c (is_destructor_name): Delete.
1326 (pp_cxx_unqualified_id): Remove bogus destructor name checking.
1327 * decl.c (grokfndecl): Move cheap checks first when looking for
1328 implicit extern cness.
1330 * parser.c (cp_parser_direct_declarator): Reorder if to avoid
1331 indentation. Remove unnecessary assignment of constructor name.
1333 Whitespace cleanups.
1334 * call.c (name_as_c_string): Move CONST_CAST to return.
1335 (build_new_method_call_1): Remove unneeded bracing.
1336 * class.c (include_empty_classes): Unbreak line.
1337 * constraint.cc (tsubst_check_constraint): Add space.
1338 * cp-tree.h (lang_decl_ns): Add comment.
1339 (PTRMEM_CST_MEMBER): Break line.
1340 * decl.c (grokfndecl): Add blank lines. Unbreak some others.
1341 (grokdeclarator): Remove lines, move declaration to first use.
1342 * decl2.c (decl_needed_p): Fix indentation.
1343 (c_parse_final_cleanups): Remove blank line.
1344 * method.c (implicitly_declare_fn): Move declaration to first use.
1345 * search.c (current_scope): Add blank lines.
1347 2017-06-28 Jason Merrill <jason@redhat.com>
1349 PR c++/72764 - ICE with invalid template typename.
1350 * decl.c (build_typename_type): No longer static.
1351 * tree.c (strip_typedefs): Use it instead of make_typename_type.
1353 PR c++/69300 - ICE with self-referential noexcept
1354 * pt.c (maybe_instantiate_noexcept): Check for recursion.
1356 PR c++/61022 - error with variadic template template parm
1357 * pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION.
1359 PR c++/72801 - ICE with variadic partial specialization
1360 * pt.c (unify_pack_expansion): Use PACK_EXPANSION_EXTRA_ARGS.
1362 PR c++/55639 - partial specialization with ::template
1363 * parser.c (cp_parser_class_head): Handle ::template.
1365 PR c++/45976 - error with ::template in declarator.
1366 * pt.c (resolve_typename_type): Fix TEMPLATE_ID_EXPR handling.
1368 PR c++/54769 - wrong lookup of dependent template-name.
1369 * parser.c (cp_parser_template_name): Handle dependent object type.
1370 (cp_parser_nested_name_specifier_opt): Make template_keyword_p a
1372 (cp_parser_id_expression): Pass it.
1373 (cp_parser_diagnose_invalid_type_name): Handle TEMPLATE_ID_EXPR.
1375 * parser.c (cp_parser_template_id): Use the range location on the
1378 PR c++/81204 - parse error with dependent template-name
1379 * parser.c (cp_parser_lookup_name): Disqualify function templates
1382 2017-06-27 Nathan Sidwell <nathan@acm.org>
1384 * pt.c (tsubst_decl <FUNCTION_DECL>): Move var decls to
1385 initialization point. Don't unnecessarily check for ctor name.
1387 * cp-tree.h (CLASSTYPE_DESTRUCTORS): Rename to ...
1388 (CLASSTYPE_DESTRUCTOR): ... this.
1389 * class.c (accessible_nvdtor_p,
1390 maybe_warn_about_overly_private_class,
1391 add_implicitly_declared_members,
1392 clone_constructors_and_destructors, type_has_virtual_destructor):
1393 Adjust for CLASSTYPE_DESTRUCTOR.
1394 (deduce_noexcept_on_destructors): Absorb into ...
1395 (check_bases_and_members): ... here.
1396 * except.c (dtor_nothrow): Adjust for CLASSTYPE_DESTRUCTOR.
1397 * init.c (build_delete): Likewise.
1398 * parser.c (cp_parser_lookup_name): Likewise.
1399 * pt.c (check_explicit_specialization): Likewise.
1400 * rtti.c (emit_support_tinfos): Likewise.
1401 * search.c (lookup_fnfields_idx_nolazy): Likewise.
1403 Kill IDENTIFIER_TEMPLATE.
1404 * cp-tree.h (lang_identifier): Remove class_template_info field.
1405 (IDENTIFIER_TEMPLATE): Delete.
1406 * name-lookup.c (constructor_name_full): Subsume into ...
1407 (constructor_name): ... here. Don't check IDENTIFIER_TEMPLATE.
1408 (constructor_name_p): Likewise.
1409 * mangle.c (write_source_name): Likewise.
1410 * ptree.c (cxx_print_identifier): Likewise.
1412 2017-06-27 Marek Polacek <polacek@redhat.com>
1415 * parser.c (cp_parser_already_scoped_statement): Initialize
1418 2017-06-26 Jason Merrill <jason@redhat.com>
1420 PR c++/81215 - deduction failure with variadic TTP.
1421 * pt.c (unify_bound_ttp_args): Restore old logic for C++14 and down.
1423 2017-06-26 Martin Sebor <msebor@redhat.com>
1426 * call.c (maybe_warn_class_memaccess): Preserve explicit conversions
1427 to detect casting away cv-qualifiers.
1429 2017-06-26 Nathan Sidwell <nathan@acm.org>
1431 * cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
1432 (DECL_COMPLETE_CONSTRUCTOR_P): Directly compare
1434 (DECL_BASE_CONSTRUCTOR_P, DECL_COMPLETE_DESTRUCTOR_P,
1435 DECL_BASE_DESTRUCTOR_P, DECL_DELETING_DESTRUCTOR_P): Likewise.
1436 (DECL_ASSIGNMENT_OPERATOR_P): Use IDENTIFIER_ASSIGN_OP_P.
1437 * decl.c (grok_op_properties): Adjust identifier checking.
1438 * init.c (expand_default_init): Adjust identifier descision.
1439 * method.c (implicitly_declare_fn): Don't use
1440 DECL_ASSIGNMENT_OPERATOR_P.
1441 * search.c (lookup_fnfields_1): Use IDENTIFIER_CTOR_P,
1443 * call.c (in_charge_arg_for_name): Reimplement.
1444 (build_special_member_call): Use IDENTIFIER_CDTOR_P,
1447 2017-06-26 Marek Polacek <polacek@redhat.com>
1450 * parser.c (cp_parser_statement): Add a default argument. Save the
1451 location of the expression-statement after labels have been parsed.
1452 (cp_parser_implicitly_scoped_statement): Set the location of the
1453 body of the conditional after parsing all the labels. Call
1454 warn_for_multistatement_macros.
1455 (cp_parser_already_scoped_statement): Likewise.
1457 2017-06-24 Paolo Carlini <paolo.carlini@oracle.com>
1460 * parser.c (cp_parser_diagnose_invalid_type_name): Don't print
1461 'typename' in error messages about missing 'typename'.
1463 2017-06-23 Jason Merrill <jason@redhat.com>
1465 PR c++/79056 - C++17 ICE with invalid template syntax.
1466 * parser.c (cp_parser_simple_type_specifier): Don't assume that type
1468 (cp_parser_check_for_invalid_template_id): Handle TYPE_DECL.
1469 * pt.c (template_placeholder_p): New.
1470 * cp-tree.h: Declare it.
1472 2017-06-23 Marc Glisse <marc.glisse@inria.fr>
1474 * decl.c (duplicate_decls): Use builtin_structptr_types.
1476 2017-06-22 Nathan Sidwell <nathan@acm.org>
1478 Reorder IDENTIFIER flags
1480 * cp-tree.h (enum cp_identifier_kind): New.
1481 (IDENTIFIER_KIND_BIT_0, IDENTIFIER_KIND_BIT_1,
1482 IDENTIFIER_KIND_BIT_2): New.
1483 (IDENTIFIER_MARKED): Move to TREE_LANG_FLAG_4.
1484 (IDENTIFIER_VIRTUAL_P, IDENTIFIER_REPO_CHOSEN): Add IDENTIFIER_CHECK.
1485 (C_IS_RESERVED_WORD): Replace with ...
1486 (IDENTIFIER_KEYWORD_P): ... this.
1487 (IDENTIFIER_CTOR_OR_DTOR_P): Replace with ...
1488 (IDENTIFIER_CDTOR_P): ... this.
1489 (IDENTIFIER_CTOR_P, IDENTIFIER_DTOR_P): New.
1490 (IDENTIFIER_OPNAME_P): Replace with ...
1491 (IDENTIFIER_ANY_OP_P): ... this.
1492 (IDENTIFIER_ASSIGN_OP_P): New.
1493 (IDENTIFIER_TYPENAME_P): Replace with ...
1494 (IDENTIFIER_CONV_OP_P): ... this.
1495 (NEW_DELETE_OPNAME_P): Replace with ...
1496 (IDENTIFIER_NEWDEL_OP_P): ... this.
1497 (DECL_CONV_FN_P, DECL_OVERLOADED_OPERATOR_P): Adjust.
1498 (get_identifier_kind_name, set_identifier_kind): Declare.
1499 * lex.c (get_identifier_kind_name, set_identifier_kind): New.
1500 (init_operators): Adjust to avoid keywords, use
1501 set_identifier_kind. Copy TYPE_EXPR slot.
1502 (init_reswords): Call set_identifier_kind.
1503 (unqualified_name_lookup_error): Adjust.
1504 * operators.def (TYPE_EXPR): Remove.
1505 * decl.c (struct predefined_identifier): Move into ...
1506 (initialize_predefined_identifiers): ... here. Call
1507 set_identifier_kind.
1508 (grokfndecl, check_var_type, grokdeclarator): Adjust.
1509 (grok_op_properties): Use IDENTIFIER_ANY_ASSIGN_OP to halve search
1511 * call.c (name_as_c_string): Adjust.
1512 (build_new_method_call_1): Likewise.
1513 * cp-cilkplus.c (is_conversion_operator_function_decl_p): Likewise.
1514 * cxx-pretty-print.c (pp_cxx_unqualified_id): Adjust.
1515 * dump.c (cp_dump_tree): Adjust.
1516 * error.c (dump_decl_name): Adjust.
1517 * mangle.c (write_unqualified_id, write_member_name,
1518 write_expression): Adjust.
1519 (mangle_conv_op_name_for_type): Use set_identifier_kind.
1520 * name-lookup.c (do_class_using_decl): Adjust.
1521 (lookup_name_fuzzy, lookup_name_real_1): Likewise.
1522 * parser.c (cp_lexer_get_preprocessor_token,
1523 cp_parser_direct_declarator): Likewise.
1524 * pt.c (push_template_decl_real, tsubst_decl, tsubst_baselink,
1525 tsubst_copy, tsubst_copy_and_build): Adjust.
1526 * ptree.c (cxx_print_identifier): Print identifier kind.
1527 * search.c (lookup_field_r, lookup_member,
1528 lookup_fnfields_idx_nolazy): Adjust.
1529 * semantics.c (finish_id_expression): Adjust..
1530 * typeck.c (cp_build_addr_expr_1): Adjust.
1532 2017-06-21 Jakub Jelinek <jakub@redhat.com>
1535 * semantics.c (handle_omp_array_sections_1, finish_omp_clauses):
1536 Complain about t not being a variable if t is OVERLOAD even
1537 when processing_template_decl.
1539 2017-06-21 David Malcolm <dmalcolm@redhat.com>
1541 * parser.c (get_cast_suggestion): New function.
1542 (maybe_add_cast_fixit): New function.
1543 (cp_parser_cast_expression): Capture the location of the closing
1544 parenthesis. Call maybe_add_cast_fixit when emitting warnings
1545 about old-style casts.
1547 2017-06-20 Jason Merrill <jason@redhat.com>
1549 PR c++/80972 - C++17 ICE with attribute packed.
1550 * call.c (build_over_call): Allow a TARGET_EXPR from reference
1553 2017-06-20 Nathan Sidwell <nathan@acm.org>
1555 * cp-tree.h (CPTI_NELTS_IDENTIFIER): Delete.
1556 (nelts_identifier): Delete.
1557 * decl.c (initialize_predefined_identifiers): Remove nelts.
1559 PR c++/67074 - namespace aliases
1560 * decl.c (duplicate_decls): Don't error here on mismatched
1562 * name-lookup.c (name_lookup::add_value): Matching namespaces are
1564 (diagnose_name_conflict): Namespaces are never redeclarations.
1565 (update_binding): An alias can match a real namespace.
1567 2017-06-19 Jason Merrill <jason@redhat.com>
1569 PR c++/80562 - ICE with constexpr if.
1570 * semantics.c (finish_if_stmt_cond): Call
1571 instantiate_non_dependent_expr.
1573 PR c++/80829 - ICE with constexpr copy of base subobject.
1574 * constexpr.c (clear_no_implicit_zero): New.
1575 (cxx_eval_call_expression): Call it.
1577 2017-06-19 Nathan Sidwell <nathan@acm.org>
1581 * name-lookup.c (set_decl_namespace): Don't follow using
1582 directives and ignore using decls. Only check overly-explicit
1583 scope after discovering decl.
1585 2017-06-19 Jason Merrill <jason@redhat.com>
1587 PR c++/81073 - constexpr and static var in statement-expression.
1588 * typeck2.c (store_init_value): Always call
1589 require_potential_constant_expression.
1590 * pt.c (convert_nontype_argument): Likewise.
1591 * constexpr.c (potential_constant_expression_1): Adjust message.
1592 Use decl_maybe_constant_var_p instead of decl_constant_var_p.
1593 * decl2.c (decl_maybe_constant_var_p): Consider initializer.
1595 2017-06-19 Nathan Sidwell <nathan@acm.org>
1597 * pt.c (coerce_template_parms): Fix indentation.
1598 (tsubst_decl): Remove repeated SET_DECL_RTL. Move VAR_P handling
1602 * name-lookup.c (update_binding): Only warn about constructors
1603 hidden by functions.
1605 2017-06-17 Jason Merrill <jason@redhat.com>
1607 PR c++/60063 - -Wunused-local-typedefs and templates.
1608 * decl2.c (is_late_template_attribute): Return false for "used".
1610 PR c++/70844 - -Wuseless-cast and inheriting constructor.
1611 * method.c (forward_parm): Suppress warn_useless_cast.
1613 2017-06-16 Jason Merrill <jason@redhat.com>
1615 PR c++/81045 - Wrong type-dependence with auto return type.
1616 * pt.c (type_dependent_expression_p): An undeduced auto outside the
1617 template isn't dependent.
1618 * call.c (build_over_call): Instantiate undeduced auto even in a
1621 PR c++/80465 - ICE with generic lambda with noexcept-specifier.
1622 * lambda.c (maybe_add_lambda_conv_op): Keep processing_template_decl
1623 set longer for a generic lambda.
1625 PR c++/80614 - Wrong mangling for C++17 noexcept type
1626 * mangle.c (write_type): Put the eh spec back on the function type.
1628 PR c++/81102 - Wrong error with partial specialization.
1629 * pt.c (unify) [TEMPLATE_PARM_INDEX]: Strip reference when comparing
1630 types. Do type deduction later.
1632 PR c++/81074 - ICE with partial specialization of member template.
1634 * pt.c (get_partial_spec_bindings): Only coerce innermost args.
1636 PR c++/80831 - ICE with -fsyntax-only.
1637 * decl2.c (c_parse_final_cleanups): Use cgraph_node::get_create.
1639 PR c++/80639 - ICE with invalid PMF initialization.
1640 PR c++/80043 - ICE with -fpermissive
1641 * typeck.c (convert_for_assignment): Recurse when instantiate_type
1642 returns without an error.
1644 2017-06-16 Nathan Sidwell <nathan@acm.org>
1646 * pt.c (tsubst_baselink): Fix & clarify formatting.
1648 * cp-tree.h (build_this_parm, cp_build_parm_decl,
1649 build_artificial_parm): Add FN parm.
1650 * decl.c (start_cleanup_fn): Adjust.
1651 (build_this_parm): Add FN parm, pass it through.
1652 (grokfndecl): Adjust parm building.
1653 * decl2.c (cp_build_parm_decl): Add FN parm, set context.
1654 (build_artificial_parm): Add FN parm, pass through.
1655 (maybe_retrofit_in_chrg): Adjust parm building.
1656 (start_static_storage_duration_function): Likwise.
1657 * lambda.c (maybe_aadd_lambda_conv_op): Likewise.
1658 * method.c (implicitly_declare_fn): Likewise.
1659 * parser.c (inject_this_parameter): Likewise.
1661 Symbol tables are insert only.
1662 * cp-tree.h (default_hash_traits <lang_identifier *>): Don't
1663 derive from pointer_hash. Make undeletable.
1665 * class.c (resort_type_method_vec): Avoid potential unsigned
1668 Don't defer noexcept_deferred_spec.
1669 * cp-tree.h (unevaluated_noexcept_spec): Don't declare.
1670 * decl.c (cxx_init_decl_processing): Initialize
1671 noexcept_deferred_spec.
1672 * except.c (unevaluated_noexcept_spec): Delete.
1673 * class.c (deduce_noexcept_on_destructor): Use
1674 noexcept_deferred_spec directly.
1675 * method.c (implicitly_declare_fn): Likewise.
1677 Make keyed_classes a vector.
1678 * cp-tree.h (CPTI_KEYED_CLASSES, keyed_classes): Delete.
1679 (keyed_classes): Declare as vector.
1680 * decl.c (keyed_classes): Define.
1681 (cxx_init_decl_processing): Allocate it.
1682 (record_key_method_defined): Use vec_safe_push.
1683 * class.c (finish_struct_1): Likewise.
1684 * pt.c (instantiate_class_template_1): Likewise.
1685 * decl2.c (c_parse_final_cleanups): Reverse iterate keyed_classes.
1688 * rtti.c (enum tinfo_kind): Add TK_DERIVED_TYPES,
1689 TK_VMI_CLASS_TYPES, TK_MAX. Delete TK_FIXED.
1691 (typeid_ok_p): Add quotes to error messages. Use get_tinfo_desc.
1692 (get_tinfo_decl): Use get_tinfo_desc.
1693 (get_pseudo_ti_init): Likewise. Adjust VMI construction.
1694 (create_pseudo_type_info): Delete.
1695 (get_pseudo_ti_index): Just determine the index.
1696 (get_tinfo_desc): New. Create all types lazily.
1697 (create_tinfo_types): Just allocate the descriptor array.
1698 (emit_support_tinfos): Use non-inserting type lookup. Set builtin
1701 2017-06-15 Martin Sebor <msebor@redhat.com>
1704 * call.c (first_non_public_field, maybe_warn_class_memaccess): New
1706 (has_trivial_copy_assign_p, has_trivial_copy_p): Ditto.
1707 (build_cxx_call): Call maybe_warn_class_memaccess.
1709 2017-06-14 Jakub Jelinek <jakub@redhat.com>
1711 * cp-gimplify.c (cp_genericize_r): Turn most of the function
1712 into a switch (TREE_CODE (stmt)) statement from long else if
1715 2017-06-13 Jakub Jelinek <jakub@redhat.com>
1718 * cp-gimplify.c (cp_genericize_r): Don't instrument MEM_REF second
1719 argument even if it has REFERENCE_TYPE.
1722 * cp-gimplify.c (cp_genericize): Only look for VAR_DECLs in
1723 BLOCK_VARS (outer) chain.
1724 (cxx_omp_const_qual_no_mutable): Likewise.
1726 2017-06-13 Martin Liska <mliska@suse.cz>
1729 * class.c (build_base_path): Use sanitize_flags_p.
1730 * cp-gimplify.c (cp_genericize_r): Likewise.
1731 (cp_genericize_tree): Likewise.
1732 (cp_genericize): Likewise.
1733 * cp-ubsan.c (cp_ubsan_instrument_vptr_p): Likewise.
1734 * decl.c (compute_array_index_type): Likewise.
1735 (start_preparsed_function): Likewise.
1736 * decl2.c (one_static_initialization_or_destruction): Likewise.
1737 * init.c (finish_length_check): Likewise.
1738 * lambda.c (maybe_add_lambda_conv_op): Likewise.
1739 * typeck.c (cp_build_binary_op): Likewise.
1740 (build_static_cast_1): Likewise.
1742 2017-06-11 Jason Merrill <jason@redhat.com>
1744 * error.c (dump_expr): Use is_this_parameter.
1746 * cp-tree.h, decl2.c, mangle.c, parser.c, pt.c, semantics.c: Use
1749 2017-06-09 Jason Merrill <jason@redhat.com>
1751 Missing bits from N4268, constant evaluation for all non-type args.
1752 * call.c (build_converted_constant_expr): Rename from
1753 build_integral_nontype_arg_conv, handle all types.
1754 * pt.c (convert_nontype_argument): In C++17 call it for all types.
1755 Move NOP stripping inside pointer case, don't strip ADDR_EXPR.
1756 * cvt.c (strip_fnptr_conv): Also strip conversions to the same type.
1758 Overhaul pointer-to-member conversion and template argument handling.
1759 * call.c (standard_conversion): Avoid creating ck_pmem when the
1760 class type is the same.
1761 * cvt.c (can_convert_qual): Split from
1762 perform_qualification_conversions.
1763 * constexpr.c (cxx_eval_constant_expression): Check it.
1764 * typeck.c (convert_ptrmem): Only cplus_expand_constant if
1765 adjustment is necessary.
1766 * pt.c (check_valid_ptrmem_cst_expr): Compare class types.
1767 (convert_nontype_argument): Avoid redundant error.
1769 * call.c (convert_like_real): Remove "inner" parameter.
1770 Don't replace a constant with its value.
1771 * cp-gimplify.c (cp_fully_fold): Use cp_fold_rvalue.
1773 * pt.c (convert_nontype_argument): Check NULLPTR_TYPE_P rather than
1776 * parser.c (cp_parser_constant_expression): Check
1777 potential_rvalue_constant_expression after decay_conversion.
1778 * pt.c (convert_nontype_argument): Don't require linkage in C++17.
1780 PR c++/80384 - ICE with dependent noexcept-specifier
1781 * pt.c (dependent_type_p_r) [FUNCTION_TYPE]: Check for dependent
1784 * constexpr.c (potential_constant_expression_1): Allow 'this' capture.
1786 2017-06-09 Jan Hubicka <hubicka@ucw.cz>
1788 * class.c (build_vtbl_initializer): Mark dvirt_fn as cold.
1789 * decl.c (cxx_init_decl_processing, push_throw_library_fn): Likewise.
1790 (excpet.c): Mark terminate as cold.
1792 2017-06-08 Jakub Jelinek <jakub@redhat.com>
1795 * semantics.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
1796 to sizetype before size_binop.
1799 * cp-gimplify.c (cxx_omp_finish_clause): When changing clause
1800 to OMP_CLAUSE_SHARED, also clear OMP_CLAUSE_SHARED_FIRSTPRIVATE
1801 and OMP_CLAUSE_SHARED_READONLY flags.
1803 2017-06-08 Jan Hubicka <hubicka@ucw.cz>
1805 * cp-tree.h (lang_check_failed): Annotate by ATTRIBUTE_COLD.
1807 2017-06-07 Nathan Sidwell <nathan@acm.org>
1809 * class.c (layout_class_type): Restructure overlong-bitfield tpe
1812 2017-06-07 Jonathan Wakely <jwakely@redhat.com>
1815 * pt.c (do_class_deduction): Build qualified type.
1817 2017-06-06 Nathan Sidwell <nathan@acm.org>
1819 * name-lookup.c (suggest_alternatives_for): Use qualified lookup
1820 sans using directives. Don't walk into inline namespaces.
1823 * name-lookup.c (adl_class_only): Don't add visible friends.
1825 2017-06-05 Volker Reichelt <v.reichelt@netcologne.de>
1827 * parser.c (cp_parser_base_specifier): Fix typos in error messages.
1829 2017-06-02 Nathan Sidwell <nathan@acm.org>
1831 Remove lang_type_ptrmem.
1832 * cp-tree.h (lang_type_header): Remove is_lang_type_class. Move
1834 (lang_type_class): ... this. Reorder bitfields. Rename to ...
1835 (lang_type): ... this. Delete old definition.
1836 (lang_type_ptrmem): Delete.
1837 (LANG_TYPE_CLASS_CHECK): Simply get TYPE_LANG_SPECIFIC. Adjust uses.
1838 (LANG_TYPE_PTRMEM_CHECK): Delete.
1839 (TYPE_GET_PTRMEMFUNC_TYPE, TYPE_SET_PTRMEMFUNC_TYPE): Delete.
1840 (TYPE_PTRMEMFUNC_TYPE): New. Use TYPE_LANG_SLOT_1.
1841 * decl.c (build_ptrmemfunc_type): Adjust.
1842 * lex.c (copy_lang_type): Remove lang_type_ptrmem handling.
1843 (maybe_add_lang_type_raw): Don't set u.c.h.is_lang_type_class.
1845 * class.c (check_bases_and_members): Adjust vec_new_uses_cookie
1848 Remove cp_binding_level::namespaces
1849 * name-lookup.h (cp_binding_level): Lose namespaces field.
1850 * name-lookup.c (add_decl_to_level): Chain namespaces on the names
1852 (suggest_alternatives_for): Adjust for namespace list. Do
1853 breadth-first search.
1854 * decl2.c (collect_source_refs): Namespaces are on the regulr
1856 (collect_ada_namespace): Likewise.
1858 2017-06-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
1860 * typeck.c (cp_build_binary_op): Implement the -Wsizeof_pointer_div
1863 2017-06-01 Ville Voutilainen <ville.voutilainen@gmail.com>
1866 * method.c (constructible_expr): Strip array types before calling
1869 2017-06-01 Paolo Carlini <paolo.carlini@oracle.com>
1872 * cvt.c (convert_to_void): Possibly call maybe_warn_nodiscard
1873 for case INDIRECT_REF too in the main switch.
1875 2017-05-31 Jason Merrill <jason@redhat.com>
1877 PR c++/80840 - ICE with constexpr and reference
1878 * pt.c (convert_nontype_argument): Don't test whether a decl is
1879 value-dependent when binding to a reference.
1881 2017-05-31 Nathan Sidwell <nathan@acm.org>
1883 * cp-tree.h (lang_decl_slector): New enum.
1884 (lang_decl_base): Make selector an enum. Drop decomposition_p
1886 (lang_decl): Use enum for discrimination.
1887 (LANG_DECL_FN_CHECK, LANG_DECL_NS_CHECK, LANG_DECL_PARM_CHECK,
1888 LANG_DECL_DEOMP_CHECK): Use enum.
1889 (DECL_DECOMPOSITION_P): Use selector value.
1890 (SET_DECL_DECOMPOSITION_P): Delete.
1891 (retrofit_lang_decl): Lose SEL parm.
1892 (fit_decomposition_lang_decl): Declare.
1893 * decl.c (cp_finish_decomp, grokdeclarator): Use
1894 fit_decomposition_lang_decl.
1895 * lex.c (maybe_add_lang_decl_raw): New. Broken out of
1897 (set_decl_linkage): New. Broken out of retrofit_lang_decl. Use enum.
1898 (fit_decomposition_lang_decl): Likewise.
1899 (retrofit_lang_decl): Use worker functions.
1900 (cxx_dup_lang_specific_decl): Use selector enum.
1901 (maybe_add_lang_type_raw): New. Broken out of ...
1902 (cxx_make_type_name): ... here. Call it.
1904 2017-05-30 Jason Merrill <jason@redhat.com>
1906 PR c++/80856 - ICE with local extern in template
1907 * semantics.c (finish_call_expr): Replace a local extern overload
1908 set in a template with the IDENTIFIER_NODE.
1910 2017-05-30 David Malcolm <dmalcolm@redhat.com>
1912 * call.c (perform_implicit_conversion_flags): Convert
1913 "from %qT to %qT" to "from %qH to %qI" in diagnostic.
1914 (print_conversion_rejection): Replace pairs of %qT with
1915 %qH and %qI in various places.
1916 (build_user_type_conversion_1): Likewise.
1917 (build_integral_nontype_arg_conv): Likewise.
1918 (build_conditional_expr_1): Likewise.
1919 (convert_like_real): Likewise.
1920 (convert_arg_to_ellipsis): Likewise.
1922 (initialize_reference): Likewise.
1923 * cvt.c (cp_convert_to_pointer): Likewise.
1924 (cp_convert_to_pointer): Likewise.
1925 (convert_to_reference): Likewise.
1926 (ocp_convert): Likewise.
1927 * error.c (cp_printer): Gain bool and const char ** parameters.
1928 (struct deferred_printed_type): New struct.
1929 (class cxx_format_postprocessor): New class.
1930 (cxx_initialize_diagnostics): Wire up a cxx_format_postprocessor
1931 to pp->m_format_postprocessor.
1932 (comparable_template_types_p): New function.
1933 (newline_and_indent): New function.
1934 (arg_to_string): New function.
1935 (print_nonequal_arg): New function.
1936 (print_template_differences): New function.
1937 (type_to_string_with_compare): New function.
1938 (print_template_tree_comparison): New function.
1939 (append_formatted_chunk): New function.
1940 (add_quotes): New function.
1941 (cxx_format_postprocessor::handle): New function.
1942 (defer_phase_2_of_type_diff): New function.
1943 (cp_printer): Add "quoted" and "buffer_ptr" params. Implement
1945 * typeck.c (cp_build_binary_op): Replace pairs of %qT with
1946 %qH and %qI in various places.
1947 (convert_member_func_to_ptr): Likewise.
1948 (build_reinterpret_cast_1): Likewise.
1949 (convert_for_assignment): Likewise.
1950 * typeck2.c (check_narrowing): Likewise.
1952 2017-05-30 Nathan Sidwell <nathan@acm.org>
1954 Kill IDENTIFIER_NAMESPACE_BINDINGS
1955 * cp-tree.h (lang_identifier): Delete namespace_bindings.
1956 (IDENTIFIER_NAMESPACE_BINDINGS): Delete.
1957 (lang_decl_ns): Add bindings.
1958 (DECL_NAMESPACE_BINDINGS): New.
1959 * lex.c (retrofit_lang_decl): Create namespace hash table.
1960 * name-lookup.c (find_namespace_slot): Change to use hash-map.
1961 * ptree.c (cxx_print_binding): Delete.
1962 (cxx_print_identifier): Remove NAMESPACE_BINDING printing.
1964 * cp-tree.def (OVERLOAD): Fix comment.
1965 * cp-tree.h: Fix comments and whitespace.
1966 * error.c (dump_decl): Use pp_cxx_colon_colon, ovl_scope.
1967 * name-lookup.c (add_decl_to_level): Assert not class.
1968 (check_local_shadow): Use OVL_P.
1969 (pushdecl_with_scope_1): Rename to ...
1970 (do_pushdecl_with_Scope): ... here.
1971 (do_nonmember_using_decl): Use qualified_namespace_lookup return
1973 (push_class_level_binding_1): Use OVL_P.
1974 (pushdecl_namespace_level): Use do_pushdecl_with_scope.
1975 (pushtag_1): Rename to ...
1976 (do_pushtag): ... here. Adjust do_pushdecl_with_scope call.
1978 (store_class_bindings): Do not time here.
1979 * name-lookup.h (pushdecl_outermost_localscope): Reorder.
1980 * pt.c (listify): Declare argvec at point of initialization.
1983 * name-lookup.c (add_decl_to_level): Assert not making a circular
1985 (update_binding): Don't prematurely slide artificial decl.
1987 2017-05-29 Alexandre Oliva <aoliva@redhat.com>
1989 * cp-tree.h (lang_identifier): Drop oracle_looked_up, unused.
1991 2017-05-29 Nathan Sidwell <nathan@acm.org>
1993 PR c++/80891 (#1,#5)
1994 * cp-tree.h (lookup_maybe_add): Add DEDUPING argument.
1995 * name-lookup.c (name_lookup): Add deduping field.
1996 (name_lookup::preserve_state, name_lookup::restore_state): Deal
1998 (name_lookup::add_overload): New.
1999 (name_lookup::add_value, name_lookup::add_fns): Call add_overload.
2000 (name_lookup::search_adl): Set deduping. Don't unmark here.
2001 * pt.c (most_specialized_instantiation): Revert previous change,
2002 Assert not given duplicates.
2003 * tree.c (lookup_mark): Just mark the underlying decls.
2004 (lookup_maybe_add): Dedup using marked decls.
2007 * ptree.c (cxx_print_xnode): Show internal OVERLOAD structure.
2008 * tree.c (ovl_insert, ovl_iterator_remove_node): Fix copying assert.
2010 Stat hack representation
2011 * name-lookup.c (STAT_HACK_P, STAT_TYPE, STAT_DECL,
2012 MAYBE_STAT_DECL, MAYBE_STAT_TYPE): New.
2014 (find_namespace_binding): Replace with ...
2015 (find_namespace_slot): ... this.
2016 (find_namespace_value): New.
2017 (name_lookup::search_namespace_only,
2018 name_lookup::adl_namespace_only): Adjust.
2019 (update_binding): Add SLOT parameter, adjust.
2020 (check_local_shadow): Use find_namespace_value.
2021 (set_local_extern_decl_linkage): Likewise.
2022 (do_pushdecl): Adjust for namespace slot.
2023 (push_local_binding): Assert not a namespace binding.
2024 (check_for_out_of_scope_variable): Use find_namespace_value.
2025 (set_identifier_type_value_with_scope): Likewise.
2026 (get_namespace_binding): Likewise.
2027 (set_namespace_binding): Delete.
2028 (set_global_binding): Directly update the binding.
2029 (finish_namespace_using_decl): Likewise.
2030 (lookup_type_scope_1): Use find_namespace_slot and update.
2031 (do_push_nested_namespace): Use find_namespace_value.
2034 * pt.c (most_specialized_instantiation): Cope with duplicate
2038 * cp-tree.h (build_min_nt_call_vec): Declare.
2039 * decl.c (build_offset_ref_call_from_tree): Call it.
2040 * parser.c (cp_parser_postfix_expression): Likewise.
2041 * pt.c (tsubst_copy_and_build): Likewise.
2042 * semantics.c (finish_call_expr): Likewise.
2043 * tree.c (build_min_nt_loc): Keep unresolved lookups.
2044 (build_min): Likewise.
2045 (build_min_non_dep): Likewise.
2046 (build_min_non_dep_call_vec): Likewise.
2047 (build_min_nt_call_vec): New.
2050 * tree.c (ovl_copy): Adjust assert, copy OVL_LOOKUP.
2052 (lookup_keep): Call it.
2054 2017-05-26 Nathan Sidwell <nathan@acm.org>
2057 * name-lookup.c (push_inline_namespaces): New.
2058 (push_namespace): Look inside inline namespaces.
2060 Inline and using namespace representation change.
2061 * cp-tree.h (struct lang_decl_ns): Delete ns_using. Add usings,
2063 (DECL_NAMESPACE_USING): Adjust.
2064 (DECL_NAMESPACE_INLINEES): New.
2065 * name-lookup.h (struct cp_binding_level): Change usings
2067 * name-lookup.c (name_lookup::do_queue_usings,
2068 name_lookup::queue_usings): Adjust.
2069 (name_lookup::search_namespace, name_lookup::search_usings,
2070 name_lookup::queue_namespace): Adjust.
2071 (name_lookup::adl_namespace_only): Adjust.
2072 (add_using_namespace, push_namespace): Push onto vector.
2073 (pop_namespace): Add timing logic.
2075 * call.c (build_operator_new_call): Do namelookup and ADL here.
2076 (build_new_op_1): Likewise.
2077 * name-lookup.h (lookup_function_nonclass): Delete declaration.
2078 (do_using_directive): Likewise.
2079 * name-lookup.c (set_namespace_binding, push_local_binding): Don't
2081 (struct scope_binding): Delete.
2082 (EMPTY_SCOPE_BINDING): Delete.
2083 (set_decl_namespace): Use OVL_P.
2084 (finish_local_using_decl): Lose unnecesary checks.
2085 (lookup_function_nonclass): Delete.
2086 (cp_emit_debug_info_for_using): Use MAYBE_BASELINK_P.
2088 * cp-tree.h (OVL_CHAIN): Check looking at OVERLOAD.
2089 (ovl_iterator): Add allow_inner field. Adjust ctor. Make
2091 (ovl_iterator::maybe_push, ovl_iterator::pop): New.
2092 (lkp_iterator): Add outer field. Adjust ctor.
2093 (lkp_iterator::operator++): New.
2094 (lookup_mark, lookup_maybe_add): Declare.
2095 * name-lookup.c (name_lookup): Delete fn_set member.
2096 (name_lookup::preserve_state, name_lookup::restore_state): Unmark
2098 (name_lookup::add_value): Use lookup_add directly.
2099 (name_lookup::add_fns: Use lookup_maybe_add.
2100 (name_lookup::search_adl): Mark and unmark fns.
2102 * pt.c (check_explicit_specialization): Use lookup_add directly.
2103 * ptree.c (cxx_print_xnode): Show complete overload structure.
2104 * tree.c (lookup_mark, lookup_maybe_add): New.
2106 * name-lookup.c (name_lookup::search_adl): ADL OMP UDR type args.
2108 2017-05-26 Jakub Jelinek <jakub@redhat.com>
2110 * cp-tree.h (struct lang_decl_decomp): New type.
2111 (struct lang_decl): Add u.decomp.
2112 (LANG_DECL_DECOMP_CHECK): Define.
2113 (DECL_DECOMPOSITION_P): Note it is set also on the vars
2114 for user identifiers.
2115 (DECL_DECOMP_BASE): Define.
2116 (retrofit_lang_decl): Add extra int = 0 argument.
2117 * lex.c (retrofit_lang_decl): Add SEL argument, if non-zero
2118 use it to influence the selector choices and for selector
2119 0 to non-zero transition copy old content.
2120 (cxx_dup_lang_specific_decl): Handle DECL_DECOMPOSITION_P.
2121 * decl.c (poplevel): For DECL_DECOMPOSITION_P, check
2122 !DECL_DECOMP_BASE instead of !DECL_VALUE_EXPR. Adjust warning
2123 wording if decl is a structured binding.
2124 (cp_finish_decomp): Pass 4 as the new argument to retrofit_lang_decl.
2125 Set DECL_DECOMP_BASE. Ignore DECL_READ_P sets from initialization
2126 of individual variables for tuple structured bindings.
2127 (grokdeclarator): Pass 4 as the new argument to retrofit_lang_decl.
2128 Clear DECL_DECOMP_BASE.
2129 * decl2.c (mark_used): Mark DECL_DECOMP_BASE TREE_USED as well.
2130 * pt.c (tsubst_decomp_names): Assert DECL_DECOMP_BASE matches what
2132 * expr.c (mark_exp_read): Recurse on DECL_DECOMP_BASE instead of
2135 2017-05-25 Jason Merrill <jason@redhat.com>
2137 PR c++/80605 - __is_standard_layout and zero-length array
2138 * class.c (check_bases): Use DECL_FIELD_IS_BASE.
2140 2017-05-25 Nathan Sidwell <nathan@acm.org>
2142 Kill OVL_CURRENT, OVL_NEXT.
2143 * cp-tree.h (OVL_CURRENT, OVL_NEXT): Delete.
2144 * name-lookup.c (set_decl_namespace): Use ovl_iterator.
2145 (consider_binding_level): Use OVL_FIRST.
2146 (cp_emit_debug_info_for_using): Use lkp_iterator.
2147 * pt.c (check_explicit_specialization): Use ovl_iterator.
2149 Kill DECL_NAMESPACE_USERS, DECL_NAMESPACE_ASSOCIATIONS.
2150 * cp-tree.h (lang_decl_ns): Remove ns_users field.
2151 (DECL_NAMESPACE_USERS, DECL_NAMESPACE_ASSOCIATIONS): Delete.
2152 (TREE_INDIRECT_USING): Delete.
2153 * name-lookup.h (is_associated_namespace): Delete.
2154 * name-lookup.c (name_lookup::search_usings,
2155 name_lookup::do_queue_usings): Usings are always direct.
2156 (is_associated_namespace): Delete.
2157 (handle_namespace_attrs): Use DECL_NAMESPACE_INLINE_P.
2158 (namespace_ancestor_1, namespace_ancestor): Delete.
2159 (push_using_directive_1, push_using_directive): Delete.
2160 (add_using_namespace_1): Delete.
2161 (add_using_namespace): Reimplement.
2162 (emit_debug_info_using_namespace): New.
2163 (finish_namespace_using_directive, finish_local_using_directive,
2164 push_namespace): Adjust.
2165 * tree.c (cp_free_lang_data): Remove DECL_NAMESPACE_USERS handling.
2167 2017-05-25 Volker Reichelt <v.reichelt@netcologne.de>
2169 * semantics.c (finish_handler_parms): Warn about non-reference type
2172 2017-05-25 Nathan Sidwell <nathan@acm.org>
2174 Reimplement unqualified namespace lookup.
2175 * name-lookup.c (name_lookup::using_pair,
2176 name_lookup::using_queue): New typedefs.
2177 (name_lookup::queue_namespace, name_lookup::do_queue_usings,
2178 name_lookup::queue_usings): New.
2179 (name_lookup::search_unqualified): New.
2180 (merge_functions, same_entity_p, ambiguous_decl,
2181 unqualified_namespace_lookup_1, unqualified_namespace_lookup,
2182 lookup_using_namespace): Delete.
2183 (lookup_name_real_1): Adjust.
2185 Reimplement qualified namespace lookup.
2186 * name-lookup.c (name_lookup::flags): New member. Adjust ctor.
2187 (name_lookup::ambiguous, name_lookup::add_value,
2188 name_lookup::add_type, name_lookup::process_binding): New.
2189 (name_lookup::search_namespace_only,
2190 name_lookup::search_namespace, name_lookup::search_usings): New.
2191 (name_lookup::search_qualified): New.
2192 (do_nonmember_using_decl, suggest_alternatives_for,
2193 lookup_qualified_name): Adjust.
2194 (tree_vec_contains): Delete.
2195 (qualified_lookup_using_namespace): Rename to ...
2196 (qualified_namespace_lookup): ... here. Reimplement.
2199 * cp-tree.h (LOOKUP_SEEN_P, LOOKUP_FOUND_P): New.
2200 * name-lookup.h (lookup_arg_dependent): Return plain tree.
2201 * name-lookup.c (arg_lookup, arg_assoc, arg_assoc_args,
2202 arg_assoc_args_vec, arg_assoc_type, add_function,
2203 arg_assoc_namespace, arg_assoc_class_only, arg_assoc_bases,
2204 arg_assoc_class, arg_assoc_template_arg, arg_assoc,
2205 lookup_arg_dependent_1): Delete.
2206 (name_lookup): New lookup object.
2207 (name_lookup::preserve_state, name_lookup::restore_state,
2208 name_lookup::mark_seen, name_lookup::find_and_mark,
2209 name_lookup::add_fns, name_lookup::adl_namespace_only,
2210 name_lookup::adl_namespace, name_lookup::adl_class_only,
2211 name_lookup::adl_bases, name_lookup::adl_class,
2212 name_lookup::adl_expr, name_lookup::adl_type,
2213 name_lookup::adl_template_arg, name_lookup::search_adl): New.
2214 (lookup_arg_dependent): Return a plain tree. Adjust.
2215 (is_associated_namespace): Move later.
2217 2017-05-24 Nathan Sidwell <nathan@acm.org>
2219 * friend.c (do_friend): Remove check for existing decl.
2220 * name-lookup.h (lookup_name_innermost_nonclass_level): Delete.
2221 * name-lookup.c (push_local_binding): Directly look for binding.
2222 (lookup_name_innermost_nonclass_level_1): Delete.
2223 (lookup_name_innermost_nonclass_level): Delete.
2225 * Make-lang.in (CXX_AND_OBJCXX_OBJS): Alphabetize.
2227 * cp-tree.h (cp_free_lang_data): Add extern.
2228 (ovl_skip_hidden, is_overloaded_fn, really_overloaded_fn): Add
2230 (type_unknown_p): Return bool, make inline, lose TREE_LIST check.
2231 * typeck.c (type_unknown_p): Delete.
2232 * tree.c (is_overloaded_fn): Use MAYBE_BASELINE_FUNCTIONS, adjust
2233 overload management.
2234 (dependent_name): Likewise.
2235 (decl_anon_ns_mem_p): Simplify.
2237 2017-05-24 Jonathan Wakely <jwakely@redhat.com>
2240 * tree.c (reshape_init): Use unqualified type for direct enum init.
2241 * typeck.c (maybe_warn_about_cast_ignoring_quals): New.
2242 (build_static_cast_1, build_reinterpret_cast_1): Strip cv-quals from
2243 non-class destination types.
2244 (build_const_cast_1): Strip cv-quals from destination types.
2245 (build_static_cast, build_reinterpret_cast, build_const_cast)
2246 (cp_build_c_cast): Add calls to maybe_warn_about_cast_ignoring_quals.
2248 2017-05-24 Martin Sebor <msebor@redhat.com>
2251 * call.c (fully_fold_internal): Adjust.
2253 2017-05-24 Nathan Sidwell <nathan@acm.org>
2255 * cp-tree.h (ovl_skip_hidden): Declare.
2256 * tree.c (ovl_skip_hidden): New.
2257 * name-lookup.c (arg_assoc_namespace): Call ovl_skip_hidden.
2258 (lookup_arg_dependent_1): Likewise.
2259 (ambiguous_decl): Use DECL_HIDDEN_P, ovl_skip_hidden.
2260 (hidden_name_p, remove_hidden_names): Delete.
2261 (lookup_name_real_1): Do not strip hidden names.
2262 * name-lookup.h (hidden_name_p, remove_hidden_names): Delete.
2264 * cp-tree.h (OVL_HIDDEN_P): New.
2265 (ovl_iterator::hidden_p, ovl_iterator::reveal_node): New.
2266 (ovl_iterator::reveal_node): Declare.
2267 * tree.c (ovl_copy): Copy OVL_HIDDEN_P.
2268 (ovl_insert): Order on hiddenness.
2269 (ovl_iterator::reveal_node): New.
2270 * name-lookup.c (anticipated_builtin_p): New.
2271 (supplement_binding_1): Use it.
2272 (set_local_extern_decl_linkage): Use hidden_p.
2273 (do_pushdecl): Deal with unhiding a hidden decl, use
2274 anticipated_builtin_p.
2275 (do_nonmember_using_decl): Use anticipated_decl_p.
2276 (lookup_name_real_1): Use DECL_HIDDEN_P.
2278 2017-05-23 Jason Merrill <jason@redhat.com>
2280 -Wunused and C++17 structured bindings
2281 * decl.c (poplevel): Don't warn about unused structured bindings,
2282 only real variables.
2283 * error.c (dump_simple_decl): Handle structured bindings.
2284 * expr.c (mark_exp_read): Look through DECL_VALUE_EXPR.
2286 2017-05-23 Nathan Sidwell <nathan@acm.org>
2288 * cp-tree.h (PUSH_GLOBAL, PUSH_LOCAL, PUSH_USING): Delete.
2289 * name-lookup.c (create_local_binding): New.
2290 (update_binding): New.
2291 (pushdecl_maybe_friend_1): Rename to ...
2292 (do_pushdecl): ... this. Reimplement.
2294 (push_overloaded_decl_1, push_overloaded_decl): Delete.
2296 2017-05-23 Jason Merrill <jason@redhat.com>
2298 PR c++/80396 - built-in for make_integer_sequence.
2299 * pt.c (builtin_pack_fn_p, builtin_pack_call_p)
2300 (expand_integer_pack, expand_builtin_pack_call): New.
2301 (find_parameter_packs_r): Check builtin_pack_call_p.
2302 (check_for_bare_parameter_packs): Handle it.
2303 (tsubst_pack_expansion): Call expand_builtin_pack_call.
2304 (declare_integer_pack): New.
2305 (init_template_processing): Call it.
2306 * decl2.c (mark_used): Check builtin_pack_fn_p.
2308 2017-05-23 Nathan Sidwell <nathan@acm.org>
2310 * name-lookup.c (find_namespace_binding): New.
2311 (pushdecl_maybe_friend_1): Use CP_DECL_CONTEXT.
2312 (set_identifier_type_value_with_scope): Use find_namespace_binding.
2313 (find_binding, cp_binding_level_find_binding_for_name,
2314 binding_for_name, namespace_binding_1): Delete.
2315 (push_overloaded_decl_1): Use CP_DECL_CONTEXT.
2316 (get_namespace_binding, set_namespace_binding,
2317 finish_namespace_using_decl, unqualified_namespace_lookup_1,
2318 qualified_lookup_using_namespace, lookup_type_scope_1,
2319 lookup_name_innermost_nonclass_level_1): Use find_namespace_binding.
2322 * parser.c (cp_parser_template_id): Keep the lookup when stashing
2325 * cp-tree.h (DECL_HIDDEN_P): New.
2326 * name-lookup.c (set_decl_context,
2327 set_local_extern_decl_linkage): New, broken out of ...
2328 (pushdecl_maybe_friend_1): ... here. Call them.
2330 2017-05-23 Thomas Schwinge <thomas@codesourcery.com>
2332 * parser.c (OACC_KERNELS_CLAUSE_MASK): Add
2333 "PRAGMA_OACC_CLAUSE_NUM_GANGS", "PRAGMA_OACC_CLAUSE_NUM_WORKERS",
2336 2017-05-23 Nathan Sidwell <nathan@acm.org>
2338 * cp-tree.h (OVL_P): New.
2339 * name-lookup.h (push_local_binding): Delete.
2340 (do_toplevel_using_decl, do_local_using_decl): Rename to ...
2341 (finish_namespace_using_decl, finish_local_using_decl): ... here
2342 * name-lookup.c (add_decl_to_level): Swap args.
2343 (pop_bindings_and_leave_scope): Look inside TREE_LIST.
2344 (diagnose_name_conflict): Check contexts are same for redecl.
2345 (update_local_overload): New.
2346 (compparms_for_decl_and_using): Rename to ...
2347 (matching_fn_p): ... here.
2348 (pushdecl_maybe_friend_1): Adjust add_decl_to_level,
2349 push_local_bindings call.
2350 (push_local_binding): Make static, replace FLAGS arg with
2352 (validate_nonmember_using_decl): Use OVL_FIRST.
2353 (do_nonmember_using_decl): Use in/out parameters. Use
2354 lkp_iterator and simplify.
2355 (do_toplevel_using_decl, do_local_using_decl): Rename to ...
2356 (finish_namespace_using_decl, finish_local_using_decl): ... here.
2358 (lookup_type_current_level): Delete.
2359 * parser.c (cp_parser_using_declaration): Adjust.
2360 * pt.c (tsubst_expr): Adjust.
2362 2017-05-22 Nathan Sidwell <nathan@acm.org>
2364 * name-lookup.h (parse_using_directive): Replace with ...
2365 (finish_namespace_using_directive): ... this and ...
2366 (finish_local_using_directive): ... this.
2367 * name-lookup.c (add_using_namespace_1): Move later.
2368 (add_using_namespace): Move later, add namespace_p arg, remove
2370 (push_using_directive_1): Directly recurse.
2371 (do_using_directive, parse_using_directive): Delete, split into ...
2372 (finish_namespace_using_directive): ... this and ...
2373 (finish_local_using_directive): ... this.
2374 (push_namespace): Use add_using_namespace.
2375 * parser.c (cp_parser_using_directive): Call
2376 finish_namespace_using_directive or finish_local_using_directive.
2377 * pt.c (tsubst_expr): Call finish_local_using_directive.
2379 * cp-objcp-common.c (cp_register_dumps): Register raw dumper.
2380 * cp-tree.h (raw_dump_id): Declare.
2381 * decl2.c (raw_dump_id): Define.
2382 (dump_tu): Use raw_dump_id.
2384 * config-lang.in (gtfiles): Sort list, break lines.
2386 * cp-tree.h (CPTI_TERMINATE, CPTI_CALL_UNEXPECTED): Rename to ...
2387 (CPTI_TERMINATE_FN, CPTI_CALL_UNEXPECTED_FN): ... here.
2388 ( CPTI_GET_EXCEPTION_PTR_FN, CPTI_BEGIN_CATCH_FN, CPTI_END_CATCH_FN,
2389 CPTI_ALLOCATE_EXCEPTION_FN, CPTI_FREE_EXCEPTION_FN, CPTI_THROW_FN,
2390 CPTI_RETHROW_FN): New.
2391 (noexcept_deferred_spec): New.
2392 (terminate_node, call_unexpected_node): Rename to ...
2393 (terminate_fn, call_unexpected_fn): ... here.
2394 (get_exception_ptr_fn, begin_catch_fn, end_catch_fn,
2395 allocate_exception_fn, free_exception_fn, throw_fn, rethrow_fn): New.
2396 * except.c (fn1..fn5, throw_fn, rethrow_rn, spec): Delete.
2397 (init_exception_processing): Adjust.
2398 (declare_library_fn): Create and push the fns here.
2399 (do_get_exception_ptr, do_begin_catch, do_end_catch,
2400 do_allocate_exception_ptr, do_free_exception_ptr): Adjust
2401 declare_library_fn use.
2402 (unevaluated_noexcept_spec): Adjust.
2403 * cp-gimplify.c (genericize_eh_spec_block,
2404 gimplify_most_not_throw_expr): Adjust.
2406 * name-lookup.c (pushdecl_top_level,
2407 pushdecl_top_level_and_finish): Move after namespace pushing and
2409 (push_to_top_level): Rename to ...
2410 (do_push_to_top_level): ... here. Remove timing code.
2411 (pop_from_top_level_1): Rename to ...
2412 (do_pop_from_top_level): ... here.
2413 (do_push_nested_namespace, do_pop_nested_namespace)
2414 (push_to_top_level): New wrapper for do_push_to_top_level.
2415 (pop_from_top_level): Adjust.
2416 (push_nested_namepace, pop_nested_namespace): Wrappers for workers.
2418 2017-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
2420 * config-lang.in (gtfiles): Add c-family/c-format.c,
2421 except.c, init.c, lambda.c and friend.c.
2422 * class.c (dvirt_fn): Move out of function scope,
2424 * except.c (fn1-5, throw_fn, rethrow_fn, spec): Likewise.
2425 * init.c (fn): Likewise.
2426 * lambda.c (ptr_id, max_id): Likewise.
2427 * friend.c (global_friend): Add GTY attribute.
2429 2017-05-19 Nathan Sidwell <nathan@acm.org>
2431 * call.c (add_list_candidates): Use OVL_FIRST.
2432 (build_new_method_call_1): Likewise.
2433 * cp-tree.h (OVL_SINGLE_P): New.
2434 (TYPE_HIDDEN_P): New.
2435 * decl.c (xref_tag_1): Use TYPE_HIDDEN_P.
2436 * dump.c (cp_tump_tree): Adjust overload dumping.
2437 * error.c (dump_decl): Use OVL_SINGLE_P, simplify context
2439 * method.c (lazily_declare_fn): Assert we added it.
2440 * parser.c (cp_parser_nested_name_specifier): Use OVL_SINGLE_P,
2442 (cp_parser_template_name): Use lkp_iterator.
2443 * pt.c (begin_template_parm_list): Fixup comment.
2444 (instantiate_class_template_1): Use TYPE_HIDDEN_P.
2445 * tree.c (ovl_iterator::remove_node): Cope with inherited ctors.
2446 (ovl_scope): Use lkp_iterator.
2448 2017-05-19 Thomas Schwinge <thomas@codesourcery.com>
2450 * parser.c (cp_parser_omp_clause_default): Handle
2451 "OMP_CLAUSE_DEFAULT_PRESENT".
2453 * parser.c (cp_parser_omp_clause_default): Avoid printing more
2454 than one syntax error message.
2456 2017-05-19 Nathan Sidwell <nathan@acm.org>
2458 * class.c (class_dump_id): Define.
2459 (dump_class_hierarchy, dump_vtable, dump_vtt): Use it.
2460 * cp-objcp-common.c (cp_register_dumps): New.
2461 * cp-objcp-common.h (cp_register_dumps): Declare.
2462 (LANG_HOOKS_REGISTER_DUMPS): Override.
2463 * cp-tree.h (class_dump_id): Declare.
2465 2017-05-18 Nathan Sidwell <nathan@acm.org>
2467 * cp-tree.h (OVL_ARG_DEPENDENT): Delete.
2469 (lookup_keep): Declare.
2470 * name-lookup.c (add_function): Don't set OVL_ARG_DEPENDENT.
2471 * pt.c (tsubst_copy): Assert lookup is persistent.
2472 * semantics.c (finish_call_expr): Use lkp_iterator, call
2474 * tree.c (ovl_copy): New.
2475 (ovl_insert, ovl_iterator::remove_node): Copy immutable nodes.
2478 * cp-tree.h (OVL_USED): Replace with ...
2479 (OVL_USING_P): ... this.
2480 (ovl_iterator::using_p): Adjust.
2481 * name-lookup.c (push_overloaded_decl_1,
2482 do_nonmember_using_decl): Adjust.
2483 * search.c (lookup_field_r): Adjust.
2484 * tree.c (ovl_insert, ovl_scope): Adjust.
2486 * cp-tree.h (lookup_add): Swap args.
2487 (ovl_cons, build_overload): Delete.
2488 * name-lookup.c (add_function, push_overloaded_decl_1,
2489 do_nonmember_using_decl, merge_functions, remove_hidden_names):
2490 Use lookup_add, ovl_insert.
2491 * pt.c (check_explicit_specialization): Use lookup_add.
2492 (do_class_deduction): Likewise. Refactor if.
2493 * tree.c (lookup_add): Swap args.
2494 (ovl_cons, build_overload): Delete.
2496 * name-lookup.c (find_local_binding): New, broken out of ...
2497 (lookup_name_innermost_nonclass_level_1): ... here. Call it.
2498 (set_namespace_binding): Swap scope & name args.
2499 (namespace_binding_1): Likewise.
2500 (pushdecl_maybe_friend_1): Adjust set_namespace_binding call.
2501 (push_overloaded_decl_1): Likewise.
2502 (set_global_binding): Likewise.
2503 (get_namespace_binding): Adjust namespace_binding_1 call.
2505 2017-05-17 Nathan Sidwell <nathan@acm.org>
2507 * cp-tree.h (default_hash_traits <lang_identifier *>): New
2509 * name-lookup.c (lookup_extern_c_fun_in_all_ns): Delete.
2510 (extern_c_fns): New hash table.
2511 (check_extern_c_conflict): New, broken out of ...
2512 (pushdecl_maybe_friend_1): ... here. Call it.
2513 (c_linkage_bindings): Just look in hash table.
2515 2017-05-17 Ville Voutilainen <ville.voutilainen@gmail.com>
2519 Implement new C++ intrinsics __is_assignable and __is_constructible.
2520 * cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New.
2522 * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
2523 CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE.
2524 * method.c (constructible_expr): Set cp_unevaluated.
2525 (is_xible_helper): New.
2526 (is_trivially_xible): Adjust.
2528 * parser.c (cp_parser_primary_expression): Handle
2529 RID_IS_ASSIGNABLE and RID_IS_CONSTRUCTIBLE.
2530 (cp_parser_trait_expr): Likewise.
2531 * semantics.c (trait_expr_value): Handle
2532 CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE.
2534 2017-05-17 Nathan Sidwell <nathan@acm.org>
2536 * cp-tree.h (ovl_iterator::using_p): New predicate.
2537 (ovl_iterator::remove_node): New worker.
2538 (ovl_insert): Declare.
2539 * tree.c (ovl_insert): New.
2540 (ovl_iterator::remove_node): New.
2541 * class.c (add_method): Use ovl_iterator, ovl_insert.
2542 (clone_function_decl): Fix description.
2543 (clone_constructors_and_destructors): Use ovl_iterator.
2545 * class.c (handle_using_decl): Use OVL_FIRST, ovl_iterator.
2546 (maybe_warn_about_overly_private_class): Use ovl_iterator.
2547 (method_name_cmp, resort_method_name_cmp): Use OVL_NAME.
2548 (resort_type_method_vec, finish_struct_methods): Use OVL_FIRST.
2549 (get_base_fndecls): Use ovl_iterator.
2550 (warn_hidden): Use OVL_NAME, ovl_iterator.
2551 (add_implicitly_declared_members): Use ovl_iterator.
2552 * constraint.cc (normalize_template_id_expression): Use OVL_FIRST,
2554 (finish_shorthand_constraint): Simplify, use ovl_make.
2555 * pt.c (make_constrained_auto): Simplify. Use ovl_make.
2556 * search.c (shared_member_p): Use ovl_iterator.
2557 (lookup_field_fuzzy_info::fuzzy_lookup_fn): Use OVL_NAME.
2558 (lookup_conversion_operator): Use OVL_FIRST.
2559 (lookup_fnfiels_idx_nolazy): Use OVL_FIRST, OVL_NAME.
2560 (look_for_overrides_here): Use ovl_iterator.
2561 (lookup_conversions_r): Use OVL_FIRST, OVL_NAME, ovl_iterator.
2562 * typeck.c (build_x_unary_op): Use ovl_make.
2564 2017-05-17 Martin Liska <mliska@suse.cz>
2566 * class.c (dump_class_hierarchy): Introduce dump_flags_t type and
2567 use it instead of int type.
2568 (dump_vtable): Likewise.
2569 (dump_vtt): Likewise.
2570 * decl2.c (dump_tu): Likewise.
2572 2017-05-16 David Malcolm <dmalcolm@redhat.com>
2574 * call.c (enforce_access): Add access_failure_info * param and use
2575 it to record access failures.
2576 * cp-tree.h (class access_failure_info): New class.
2577 (enforce_access): Add access_failure_info * param, defaulting to
2579 (lookup_member): Likewise.
2580 (locate_field_accessor): New function decl.
2581 (perform_or_defer_access_check): Add access_failure_info * param,
2583 * search.c (lookup_member): Add access_failure_info * param and
2584 pass it on to call to perform_or_defer_access_check.
2585 (matches_code_and_type_p): New function.
2586 (field_access_p): New function.
2587 (direct_accessor_p): New function.
2588 (reference_accessor_p): New function.
2589 (field_accessor_p): New function.
2590 (struct locate_field_data): New struct.
2591 (dfs_locate_field_accessor_pre): New function.
2592 (locate_field_accessor): New function.
2593 * semantics.c (perform_or_defer_access_check): Add
2594 access_failure_info * param, and pass it on to call to
2596 * typeck.c (access_failure_info::record_access_failure): New method.
2597 (access_failure_info::maybe_suggest_accessor): New method.
2598 (finish_class_member_access_expr): Pass an access_failure_info
2599 instance to the lookup_member call, and call its
2600 maybe_suggest_accessor method afterwards.
2602 2017-05-16 Marek Polacek <polacek@redhat.com>
2606 * cp-gimplify.c (cp_fold): Handle SAVE_EXPR.
2608 2017-05-16 Nathan Sidwell <nathan@acm.org>
2610 * name-lookup.c (check_local_shadow): New, broke out of ...
2611 (pushdecl_maybe_friend_1): ... here. Call it.
2613 * cp-tree.h (OVL_NESTED_P, OVL_LOOKUP_P): New.
2614 (ovl_first): Move inline definition to end of file.
2615 (ovl_make, lookup_add): Declare.
2616 (get_fns, get_first_fn): Make pure.
2617 * tree.c (ovl_cache): New.
2618 (ovl_make, lookup_add): New.
2619 * pt.c (do_class_deduction): Don't add candidates that will be
2622 * call.c (build_user_type_conversion_1): Use OVL_FIRST.
2623 (print_error_for_call_failure): Use OVL_NAME.
2624 (build_op_call_1): Use ovl_iterator.
2625 (add_candidates): Use OVL_FIRST & lkp_iterator.
2626 (build_op_delete_call): Use MAYBE_BASELINK_FUNCTIONS &
2628 * class.c (deduce_noexcept_on_destructors): Use ovl_iterator.
2629 (type_has_user_nondefault_constructor,
2630 in_class_defaulted_default_constructor,
2631 type_has_user_provided_constructor,
2632 type_has_user_provided_or_explicit_constructor,
2633 type_has_non_user_provided_default_constructor,
2634 vbase_has_user_provided_move_assign,
2635 type_has_move_constructor, type_has_move_assign,
2636 type_has_user_declared_move_constructor,
2637 type_has_user_declared_move_assign,
2638 type_build_ctor_call, type_build_dtor_call,
2639 type_requires_array_cookie, explain_non_literal_class): Likewise.
2640 (finish_struct): Use lkp_iterator.
2641 (resolve_address_of_overloaded_function): Use OVL_NAME, lkp_iterator.
2642 (note_name_declared_in_class): Use OVL_NAME.
2643 * cxx-pretty-print.c (pp_cxx_unqualified_id): Use OVL_FIRST.
2644 (pp_cxx_qualified_id, cxx_pretty_printer::id_expression,
2645 cxx_pretty_printer::expression): Likewise.
2646 * decl2.c (check_classfn): Use ovl_iterator.
2647 * pt.c (retrieve_specialization): Use ovl_iterator.
2648 * tree.c (cp_tree_equal): Use lkp_iterator.
2649 (type_has_nontrivial_copy_init): Use ovl_iterator.
2651 * typeck2.c (cxx_incomplete_type_diagnostic): Revert change and
2652 check is_overloaded_fn.
2654 2017-05-16 Martin Liska <mliska@suse.cz>
2656 * parser.c (cp_lexer_print_token): Add default value for flags
2657 argument of print_gimple_stmt, print_gimple_expr,
2658 print_generic_stmt and print_generic_expr.
2660 2017-05-16 Nathan Sidwell <nathan@acm.org>
2662 * cp-tree.h (class ovl_iterator, class lkp_iterator): New OVERLOAD
2664 (MAYBE_BASELINK_FUNCTIONS): New.
2665 * constraint.cc (resolve_constraint_check): Use lkp_iterator.
2666 * decl2.c (maybe_warn_sized_delete): Use ovl_iterator.
2667 * lambda.c (maybe_generic_this_capture): Use lkp_iterator.
2668 * method.c (inherited_ctor_binfo): Use ovl_iterator.
2669 (binfo_inherited_from): Likewise.
2670 * parser.c (lookup_literal_operator): Use lkp_iterator.
2671 * pt.c (iterative_hash_template_arg): Use lkp_iterator.
2672 (print_candidates_1): Likewise.
2673 (determine_specialization): Likewise.
2674 (resolve_overloaded_unification): Likewise.
2675 (resolve_nondeduced_context): Likewise.
2676 (type_dependent_expression_p): Likewise.
2677 (dependent_template_p): Likewise.
2678 * ptree.c (cxx_print_xnode): Likewise.
2679 * semantics.c (omp_reduction_lookup): Use lkp_iterator.
2680 (classtype_has_nothrow_assign_or_copy_p): Use ovl_iterator.
2681 * typeck.c (check_template_keyword): Use lkp_iterator.
2683 * cp-tree.h (OVL_FIRST, OVL_NAME): New.
2685 * constexpr.c (function_concept_check): Use OVL_FIRST.
2686 * cvt.c (build_expr_type_conversion): Likewise.
2687 * decl.c (poplevel, grokdeclarator): Use OVL_NAME.
2688 * decl2.c (mark_used): Use OVL_FIRST.
2689 * error.c (dump_decl): Use OVL_FIRST, OVL_NAME.
2690 (dump_expr, location_of): Use OVL_FIRST.
2691 * friend.c (do_friend): Use OVL_NAME.
2692 * init.c (build_offset_ref): Use OVL_FIRST.
2693 * mangle.c (write_member_name): Likewise.
2694 (write_expression): Use OVL_NAME.
2695 * method.c (strip_inheriting_ctors): Use OVL_FIRST.
2696 * name-lookup.c (pushdecl_class_level): Use OVL_NAME.
2697 * pt.c (check_explicit_specialization): Use OVL_FIRST.
2698 (check_template_shadow): Likewise.
2699 (tsubst_template_args): Use OVL_NAME.
2700 (tsubst_baselink): Use OVL_FIRST.
2701 * semantics.c (perform_koenig_lookup): Use OVL_NAME.
2702 * tree.c (get_first_fn): Use OVL_FIRST.
2703 * typeck.c (finish_class_member_access_expr): Use OVL_NAME.
2704 (cp_build_addr_expr_1): Use OVL_FIRST.
2706 * pt.c (tsubst_copy_and_build): Remove unnecessary COMPONENT_REF
2708 * semantics.c (finish_id_expression): Directly init local var.
2709 (finish_omp_reduction_clause): Use really_overloaded_fn.
2710 * tree.c (get_fns): Document. Assert we got an overload.
2711 (get_first_fn) Document.
2712 * typeck.c (cp_build_addr_expr_1): Pass arg directly to
2713 really_overloaded_fn.
2714 * typeck2.c (cxx_incomplete_type_diagnostic): Use get_first_fn directly.
2716 * cp-tree.h (SCOPE_DEPTH): New.
2717 * name-lookup.h (is_nested_namespace): Declare.
2718 * name-lookup.c (is_nested_namespace): New.
2719 (is_ancestor): Use it.
2720 (set_decl_namespace): Likewise.
2721 (push_namespace): Set SCOPE_DEPTH.
2722 * pt.c (check_specialization_namespace): Use is_nested_namespace.
2723 (check_unqualigied_spec_or_inst): Likewise.
2725 2017-05-15 Nathan Sidwell <nathan@acm.org>
2728 * cp-tree.h (DECL_NAMESPACE_INLINE_P): New.
2729 * name-lookup.h (push_namespace): Return int, add make_inline arg.
2730 * name-lookup.c (push_namespace): Deal with inline directly.
2731 Return pushed count.
2732 * parser.c (cp_parser_namespace_definition): Adjust for
2733 push_namespace change.
2735 2017-05-11 Nathan Sidwell <nathan@acm.org>
2737 * cp-lang.c (get_global_decls, cxx_pushdecl, LANG_HOOK_GETDECLS,
2738 LANG_HOOKS_PUSHDECL): Move to ...
2739 * cp-objcp-common.c (cp_get_global_decls, cp_pushdec,
2740 LANG_HOOK_DECLS, LANG_HOOKS_PUSHDECL): ... here.
2741 * cp-objcp-common.h (cp_get_global_decls, cp_pushdecl): Declare.
2743 * name-lookup.h (pushdecl): Add default friend parm.
2744 (pushdecl_maybe_friend): Delete.
2745 (pushdecl_top_level): Add default friend parm.
2746 (pushdecl_top_level_maybe_friend): Delete.
2747 * name-lookup.c (pushdecl_maybe_friend): Delete.
2748 (pushdecl): Add is_friend parm.
2749 (pushdecl_top_level): Add is friend_parm.
2750 (pushdecl_top_level_maybe_friend, pushdecl_top_level_1): Delete.
2751 (pushdecl_top_level_and_finish): Do pushing and finishing directly.
2752 * friend.c (do_friend): Adjust.
2753 * pt.c (tsubst_friend_class): Adjust.
2755 Revert pushdecl_top_level_and_finish name change.
2756 * name-lookup.h (pushdecl_top_level_and_finish): Resurrect old name.
2757 * name-lookup.c (pushdecl_top_level_and_finish): Likewise.
2758 * decl.c (cp_make_fname_decl): Adjust.
2759 * decl2.c (get_guard, handle_tls_init): Adjust.
2760 * rtti.c (get_tinfo_decl, tinfo_base_init): Adjust.
2762 * name-lookup.c (pushdecl_outermost_localscope): Always
2763 conditionally stop timer.
2765 * decl.c (xref_tag_1): Don't frob ts_lambda scope here.
2766 * name-lookup.c (pushtag_1): Deal with ts_lambda scope.
2768 * cp-tree.h (pushdecl, pushdecl_maybe_friend, pushtag,
2769 pushtag_top_level_maybe_friend,
2770 pushdecl_top_level_and_finish): Move declarations to ...
2771 * name-lookup.h: ... here. Group pushdecl variants.
2772 (pushdecl_top_level_and_finish): Rename to ...
2773 (pushdecl_top_level_with_init): ... here.
2774 * decl.c (cp_make_fname_decl): Use pushdecl_top_level_with_init.
2775 * decl2.c (get_guard, handle_tls_init): Likewise.
2776 * rtti.c (get_tinfo_decl, tinfo_base_init): Likewise.
2777 * lambda.c (maybe_add_lambda_conv_op): Use namespace_bindings_p.
2778 * method.c (implicitly_declare_fn): Likewise.
2779 * searchc (node_debug_info_needed): Likewise.
2780 * name-lookup.c (pushdecl_top_level_and_finish): Rename to ...
2781 (pushdecl_top_level_with_init): ... here.
2782 (pop_everything): Use namespace_bindings_p.
2784 * name-lookup.h (pop_binding): Rename to pop_local_binding.
2785 (getdecls): Rename to get_local_decls.
2786 * name-lookup.c (pop_binding): Rename to ...
2787 (pop_local_binding): ... here.
2788 (pop_bindings_and_leave_scope): Adjust.
2789 (getdecls): Rename to ...
2790 (get_local_decls): ... here. Assert local scope.
2791 * decl.c (poplevel): Assert not namespace. Adjust and simplify
2793 (store_parm_decls): Adjust get_local_decls call.
2794 (parser.c (synthesize_implicit_template_parm): Likewise.
2796 2017-05-11 Ville Voutilainen <ville.voutilainen@gmail.com>
2799 * method.c (is_trivially_xible): Reject void types.
2801 2017-05-10 Nathan Sidwell <nathan@acm.org>
2803 * class.c (handle_using_decl): Always use OVL_CURRENT.
2804 (resolve_address_of_overloaded_function): Move iterator decl into
2805 for scope. Don't strip anticipated decls here.
2807 * pt.c (print_candidates_1): Separate TREE_LIST and OVERLOAD
2809 (print_candidates): Adjust.
2811 * cp-tree.h (build_new_function_call): Lose koenig_p arg. Fix
2813 * call.c (build_new_function_call): Lose koenig_p arg. Remove
2814 koenig_p handling here.
2815 * pt.c (push_template_decl_real): Unconditionally retrofit_lang_decl.
2816 (tsubst_omp_clauses): Likewise.
2817 (do_class_deduction): Adjust buld_new_function_call calls.
2818 * semantics.c (finish_call_expr): Likewise.
2820 2017-05-10 Jason Merrill <jason@redhat.com>
2822 * pt.c (unify_parameter_deduction_failure, unify_cv_qual_mismatch)
2823 (unify_type_mismatch, unify_parameter_pack_mismatch)
2824 (unify_ptrmem_cst_mismatch, unify_expression_unequal)
2825 (unify_parameter_pack_inconsistent, unify_inconsistency)
2826 (unify_vla_arg, unify_method_type_error, unify_arity)
2827 (unify_arg_conversion, unify_no_common_base)
2828 (unify_inconsistent_template_template_parameters)
2829 (unify_template_deduction_failure)
2830 (unify_template_argument_mismatch)
2831 (unify_overload_resolution_failure): Call unify_invalid.
2833 CWG 1847 - Clarifying compatibility during partial ordering
2834 * pt.c (more_specialized_fn): No order between two non-deducible
2837 * pt.c (dependent_type_p): Make sure we aren't called with
2840 PR c++/79549 - C++17 ICE with non-type auto template parameter pack
2841 * pt.c (convert_template_argument): Just return an argument pack.
2842 (coerce_template_parameter_pack, template_parm_to_arg)
2843 (extract_fnparm_pack, make_argument_pack, tsubst_template_args)
2844 (tsubst_decl, tsubst, type_unification_real, unify_pack_expansion):
2845 Don't set the type of a NONTYPE_ARGUMENT_PACK.
2846 * parser.c (make_char_string_pack, make_string_pack): Likewise.
2848 2017-05-10 Nathan Sidwell <nathan@acm.org>
2850 * cp-tree.h (add_method, clone_function_decl): Change last arg to
2852 * class.c (add_method): Change third arg to bool. Adjust.
2853 (one_inheriting_sig, one_inherited_ctor): Adjust.
2854 (clone_function_decl): Change 2nd arg to bool. Adjust.
2855 (clone_constructors_and_destructors): Adjust.
2856 * lambda.c (maybe_add_lambda_conv_op): Adjust.
2857 * method.c (lazily_declare_fn): Adjust.
2858 * pt.c (tsubst_decl, instantiate_template_1): Adjust.
2859 * semantics.c (finish_member_declaration): Adjust.
2861 2017-05-10 Paolo Carlini <paolo.carlini@oracle.com>
2864 * decl.c (finish_function): To improve error recovery, change the
2865 logic for calling apply_deduced_return_type.
2867 2017-05-09 Jason Merrill <jason@redhat.com>
2869 PR c++/80605 - __is_standard_layout and empty base
2870 * class.c (check_bases): Ignore empty bases.
2872 PR c++/70979 - literal class and closure types
2873 * class.c (finalize_literal_type_property): Handle closures
2875 (explain_non_literal_class): Likewise.
2877 PR c++/66297, DR 1684 - literal class and constexpr member fns
2878 * constexpr.c (is_valid_constexpr_fn): Only complain about
2879 non-literal enclosing class in C++11.
2880 * class.c (finalize_literal_type_property): Likewise.
2882 2017-05-09 Paolo Carlini <paolo.carlini@oracle.com>
2885 * pt.c (tsubst_decl): Early return error_mark_node if
2886 grok_ctor_properties returns false.
2888 2017-05-09 Jason Merrill <jason@redhat.com>
2890 PR c++/70167 - array prvalue treated as lvalue
2891 * cp-tree.h (CONSTRUCTOR_C99_COMPOUND_LITERAL): New.
2893 * semantics.c (finish_compound_literal): Add fcl_context parameter.
2894 Only make a static variable for C99 syntax.
2895 * parser.c (cp_parser_postfix_expression): Pass it.
2896 * pt.c (tsubst_copy_and_build): Likewise.
2897 * call.c (extend_ref_init_temps): Set
2898 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2900 2017-05-09 Nathan Sidwell <nathan@acm.org>
2902 * cp-lang.c (get_global_decls, cxx_pushdecl): New.
2903 (LANG_HOOKS_GETDECLS, LANG_HOOKS_PUSHDECL): Override.
2904 * name-lookup.h (pushdecl_top_level): Declare.
2906 2017-05-08 Jason Merrill <jason@redhat.com>
2908 PR c++/80178 - parameter passing for uncopyable classes
2909 * tree.c (type_has_nontrivial_copy_init): True for classes with only
2910 deleted copy/move ctors.
2911 (remember_deleted_copy, maybe_warn_parm_abi): New.
2912 * decl.c (require_complete_types_for_parms, check_function_type):
2913 Call maybe_warn_parm_abi.
2914 * call.c (convert_for_arg_passing, build_cxx_call): Likewise.
2916 2017-05-08 Nathan Sidwell <nathan@acm.org>
2918 * decl.c (builtin_function_1): Set DECL_ANTICIPATED before pushing.
2919 (start_preparsed_function): Do decl pushing before setting
2920 current_funciton_decl and announcing it.
2922 * name-lookup.h (pushdecl_with_scope): Replace with ...
2923 (pushdecl_outermost_localscope): ... this.
2924 * name-lookup.c (pushdecl_with_scope): Replace with ...
2925 (pushdecl_outermost_localscope): ... this.
2926 (pushdecl_namespace_level): Adjust.
2927 * decl.c (cp_make_fname_decl): Use pushdecl_outermost_localscope.
2928 * lambda.c (insert_capture_proxy): Likewise.
2930 * class.c (build_vtbl_initializer): Don't shadow outer variable
2933 Revert _binding -> _value change.
2934 * name-lookup.h (get_namespace_value, set_global_value): Rename to ...
2935 (get_namespace_binding, set_global_binding): ... these.
2936 * name-lookup.c (get_namespace_value, set_global_value): Rename to ...
2937 (get_namespace_binding, set_global_binding): ... these.
2938 (arg_assoc_namespace, pushdecl_maybe_friend_1,
2939 check_for_out_of_scope_variable, push_overloaded_decl_1,
2940 lookup_name_innermost_nonclass_level, push_namespace): Adjust.
2941 * cp-tree.h (IDENTIFIER_GLOBAL_VALUE,
2942 SET_IDENTIFIER_GLOBAL_VALUE): Adjust.
2943 * decl.c (poplevel): Adjust.
2944 * pt.c (make_constrained_auto): Likewise.
2946 2017-05-07 Volker Reichelt <v.reichelt@netcologne.de>
2948 PR translation/80280
2949 * call.c (print_z_candidate): Fix quoting.
2951 2017-05-05 David Malcolm <dmalcolm@redhat.com>
2953 * error.c (pedwarn_cxx98): Replace report_diagnostic
2954 with diagnostic_report_diagnostic.
2956 2017-05-05 Nathan Sidwell <nathan@acm.org>
2958 * cp-tree.h (IDENTIFIER_GLOBAL_VALUE): Use get_namespace_value.
2959 (SET_IDENTIFIER_GLOBAL_VALUE): Use set_global_value.
2960 (IDENTIFIER_NAMESPACE_VALUE): Delete.
2961 * name-lookup.h (namespace_binding, set_namespace_binding): Replace
2963 (get_namespace_value, set_global_value): ... these.
2964 (get_global_value_if_present, is_typename_at_global_scope): Delete.
2965 * decl.c (poplevel): Use get_namespace_value.
2966 (grokdeclarator): Use IDENTIFIER_GLOBAL_VALUE.
2967 * class.c (build_vtbl_initializer): Stash library decl in
2968 static var. Use IDENTIFIER_GLOBAL_VALUE.
2969 * except.c (do_get_exception_ptr, do_begin_catch, do_end_catch,
2970 do_allocate_exception, do_free_exception, build_throw): Likewise.
2971 * init.c (throw_bad_array_new_length): Likewise.
2972 * rtti.c (throw_bad_cast, throw_bad_typeid): Likewise.
2973 * name-lookup.c (arg_assoc_namespace, pushdecl_maybe_friend_1,
2974 check_for_our_of_scope_variable, push_overloaded_decl_1): Use
2975 get_namespace_value.
2976 (set_namespace_binding_1): Rename to
2977 (set_namespace_binding): ... here.
2978 (set_global_value): New.
2979 (lookup_name_innermost_nonclass_level_1, push_namespace): Use
2980 get_namespace_value.
2981 * pt.c (listify): Use get_namespace_value.
2983 * call.c (make_temporary_var_for_ref_to_temp): Push decl into
2985 * lex.c (unqualified_name_lookup_error): Likewise.
2987 * class.c (alter_class): Use retrofit_lang_decl directly.
2988 * decl.c (push_local_name, dupliate_decls): Likewise.
2989 * semantics.c (omp_privatize_field): Likewise.
2991 Kill walk_namespaces.
2992 * cp-tree.h (walk_namespaces_fn, walk_namespaces): Delete.
2993 * decl.c (walk_namespaces_r, walk_namespaces): Delete.
2995 Kill per-namespace static_decls.
2996 * cp-tree.h (static_decls): Declare.
2997 (wrapup_globals_for_namespace,
2998 diagnose_inline_vars_for_namespace): Replace with ...
2999 (wrapup_namespace_globals): ... this.
3000 * decl.c (static_decls): Define.
3001 (wrapup_globals_for_namespace,
3002 diagnose_inline_vars_for_namespace): Replace with ...
3003 (wrapup_namespace_globals): ... this.
3004 (cxx_init_decl_processing): Initialize static_decls.
3005 * decl2.c (c_parse_final_cleanups): Adjust.
3006 * name-lookup.h (cp_binding_level): Remove static_decls member.
3007 * name-lookup.c (add_decl_to_level): Adjust.
3008 (begin_scope): Adjust.
3010 2017-05-05 Paolo Carlini <paolo.carlini@oracle.com>
3013 * decl.c (reshape_init): Unconditionally return error_mark_node
3014 upon error about too many initializers.
3016 2017-05-04 Nathan Sidwell <nathan@acm.org>
3018 * constraint.cc (diagnose_check_constraint): Fix %E thinko.
3020 2017-05-04 Martin Sebor <msebor@redhat.com>
3022 PR translation/80280
3023 * call.c (print_z_candidate): Add missing quoting to %D and other
3025 (build_op_call_1): Same.
3026 * constraint.cc (diagnose_check_constraint): Same.
3027 * mangle.c (mangle_decl): Same.
3028 * name-lookup.c (cp_binding_level_debug): Same.
3029 (set_decl_namespace): Same.
3030 * parser.c (cp_parser_tx_qualifier_opt): Same.
3031 * pt.c (print_candidates_1): Same.
3032 (check_template_variable): Same.
3033 (tsubst_default_argument): Same.
3034 (most_specialized_partial_spec): Same.
3035 * semantics.c (omp_reduction_lookup): Same.
3036 * tree.c (check_abi_tag_redeclaration): Same.
3037 * typeck.c (comptypes): Same.
3038 * typeck2.c (abstract_virtuals_error_sfinae): Same.
3040 2017-05-04 Nathan Sidwell <nathan@acm.org>
3043 * cp-tree.h (enum cp_tree_index): Add CPTI_GLOBAL,
3044 CPTI_GLOBAL_TYPE, CPTI_GLOBAL_IDENTIFIER, CPTI_ANON_IDENTIFIER,
3045 CPTI_INIT_LIST_IDENTIFIER.
3046 (global_namespace, global_type_node, global_identifier,
3047 anon_identifier, init_list_identifier): New.
3048 * decl.c (global_type_node, global_scope_name): Delete.
3049 (initialize_predefined_identifiers): Add new identifiers.
3050 (cxx_init_decl_processing): Adjust.
3051 * name-lookup.h (global_namespace, global_type_node): Delete.
3052 * name-lookup.c (global_namespace, anonymous_namespace_name,
3053 get_anonymous_namespace_name): Delete.
3054 (namespace_scope_ht_size, begin_scope, pushtag_1,
3055 push_namespace): Adjust,
3056 * call.c (type_has_extended_temps): Use init_list_identifier.
3057 * pt.c (listify): Likewise.
3059 * name-lookup.c: Reorder functions to make merging from modules
3062 2017-05-03 Jason Merrill <jason@redhat.com>
3064 * constexpr.c (cxx_eval_outermost_constant_expr): Use TV_CONSTEXPR.
3066 2017-05-03 Nathan Sidwell <nathan@acm.org>
3068 * cp-tree.h (enum cp_tree_index, cp_global_trees): Move earlier,
3069 along with #defines, to before name-lookup include.
3071 2017-05-02 Paolo Carlini <paolo.carlini@oracle.com>
3073 * pt.c (is_auto_or_concept): Remove.
3074 (type_uses_auto_or_concept): Remove, unused.
3075 (find_parameter_packs_r, extract_autos_r, is_auto_r): Adjust.
3076 * parser.c (tree_type_is_auto_or_concept): Remove, unused.
3077 * cp-tree.h (is_auto_or_concept): Remove.
3079 2017-05-01 Xi Ruoyao <ryxi@stu.xidian.edu.cn>
3082 * cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Don't
3083 add pedigree operation and detach call here.
3084 * cp-gimplify.c (cp_gimplify_expr): Remove the calls to
3085 cilk_cp_gimplify_call_params_in_spawned_fn.
3086 (cilk_cp_gimplify_call_params_in_spawned_fn): Remove function.
3087 * semantics.c (simplify_aggr_init_expr): Copy EXPR_CILK_SPAWN.
3089 2017-04-29 Volker Reichelt <v.reichelt@netcologne.de>
3091 * parser.c (cp_parser_member_declaration): Add fix-it hints for
3092 stray comma and missing semicolon at end of member declaration.
3094 2017-04-27 Volker Reichelt <v.reichelt@netcologne.de>
3096 * parser.c (cp_parser_cast_expression): Add target type of cast to
3098 * error.c (type_to_string): Add '{enum}' suffix to enumeration types.
3100 2017-04-26 Paolo Carlini <paolo.carlini@oracle.com>
3102 * decl.c (grok_ctor_properties, ambi_op_p, unary_op_p): Change
3103 return type to bool.
3104 * cp-tree.h (grok_ctor_properties): Update.
3106 2017-04-26 Volker Reichelt <v.reichelt@netcologne.de>
3108 * parser.c (cp_parser_nested_name_specifier_opt): Add fix-it
3109 information to diagnostic of invalid colon in nested-name-specifier.
3111 2017-04-25 Volker Reichelt <v.reichelt@netcologne.de>
3113 * parser.c (cp_parser_elaborated_type_specifier): Add fix-it to
3114 diagnostic of invalid class/struct keyword after enum.
3116 2017-04-25 David Malcolm <dmalcolm@redhat.com>
3118 * parser.c (cp_parser_member_declaration): Add fix-it hint
3119 for removing stray semicolons.
3121 2017-04-25 David Malcolm <dmalcolm@redhat.com>
3123 * name-lookup.c (get_std_name_hint): New function.
3124 (maybe_suggest_missing_header): New function.
3125 (suggest_alternative_in_explicit_scope): Call
3126 maybe_suggest_missing_header.
3128 2017-04-25 David Malcolm <dmalcolm@redhat.com>
3131 * name-lookup.c (suggest_alternative_in_explicit_scope): Convert
3132 candidate type of bm from tree to const char *.
3133 (consider_binding_level): Likewise.
3134 (lookup_name_fuzzy): Likewise, using this to merge the best
3135 result from the preprocessor into bm, rather than immediately
3136 returning, so that better matches from reserved words can "win".
3137 Guard the rejection of keywords that don't start decl-specifiers
3138 so it only happens for FUZZY_LOOKUP_TYPENAME.
3140 2017-04-24 Volker Reichelt <v.reichelt@netcologne.de>
3142 * decl.c (grokdeclarator): Use %qT instead of %<%T%> in diagnostics.
3143 (start_enum): Likewise.
3144 (build_enumerator): Likewise. Use %qE instead of plain %E.
3145 * parser.c (cp_parser_mem_initializer_list): Use %qD instead of
3146 %<%D%> in diagnostics.
3147 (cp_parser_elaborated_type_specifier): Likewise.
3148 * pt.c (make_pack_expansion): Use %qT and %qE instead of
3149 %<%T%> and %<%E%> in diagnostics.
3150 (tsubst_pack_expansion): Likewise.
3152 2017-04-24 David Malcolm <dmalcolm@redhat.com>
3155 * parser.c (cp_parser_unary_expression): Generate a location
3156 range for alignof and sizeof expressions.
3158 2017-04-24 Volker Reichelt <v.reichelt@netcologne.de>
3160 * parser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to
3162 (cp_parser_virt_specifier_seq_opt): Likewise.
3163 (set_and_check_decl_spec_loc): Likewise twice.
3165 2017-04-21 Jason Merrill <jason@redhat.com>
3167 PR c++/80179 - ICE with initialized flexible array member.
3168 * constexpr.c (verify_ctor_sanity): Handle flexible array members.
3170 2017-04-21 Richard Biener <rguenther@suse.de>
3172 * cp-tree.h (copy_decl): Annotate with CXX_MEM_STAT_INFO.
3173 (copy_type): Likewise.
3174 * lex.c (copy_decl): Pass down mem-stat info.
3175 (copy_type): Likewise.
3177 2017-04-20 Jonathan Wakely <jwakely@redhat.com>
3180 * init.c (build_new_1): Suppress notes about over-aligned new when
3181 the warning is suppressed.
3183 2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
3185 * parser.c (cp_parser_member_declaration): Add warning with fixit
3186 information for extra semicolon after in-class function definition.
3188 2017-04-20 Jakub Jelinek <jakub@redhat.com>
3191 * tree.c (build_cplus_array_type): Call build_array_type
3192 with the intended TYPE_TYPELESS_STORAGE flag value, instead
3193 of calling build_array_type and modifying later TYPE_TYPELESS_STORAGE
3196 2017-04-18 Marek Polacek <polacek@redhat.com>
3198 PR c++/80244 - ICE with attribute in template alias.
3199 * tree.c (strip_typedefs): Handle UNDERLYING_TYPE.
3201 PR c++/80241 - ICE with alignas pack expansion.
3202 * error.c (dump_expr): Handle TREE_LIST.
3203 * parser.c (cp_parser_std_attribute_list): Return error_mark if
3204 make_pack_expansion returns an error.
3206 2017-04-17 Bernd Edlinger <bernd.edlinger@hotmail.de>
3209 * class.c (fixup_may_alias): Fix all type variants.
3211 2017-04-17 Jason Merrill <jason@redhat.com>
3213 PR c++/80415 - wrong error with default arg and array reference.
3214 * tree.c (lvalue_kind): Return clk_class for an array prvalue.
3216 * pt.c (tsubst_init): Set TARGET_EXPR_DIRECT_INIT_P.
3218 2017-04-15 Alexandre Oliva <aoliva@redhat.com>
3220 * decl.c (name_unnamed_type): Split out of...
3221 (grokdeclarator): ... this.
3222 * decl.h (name_unnamed_type): Declare.
3224 2017-04-12 Richard Biener <rguenther@suse.de>
3225 Bernd Edlinger <bernd.edlinger@hotmail.de>
3228 * tree.c (build_cplus_array_type): Set TYPE_TYPELESS_STORAGE
3229 for arrays of character or std::byte type.
3231 2017-04-11 Jason Merrill <jason@redhat.com>
3233 PR c++/80294 - ICE with constexpr and inheritance.
3234 * constexpr.c (reduced_constant_expression_p):
3235 A null constructor element is non-constant.
3236 (cxx_eval_indirect_ref): Don't VERIFY_CONSTANT before
3237 returning an empty base.
3239 2017-04-11 Jakub Jelinek <jakub@redhat.com>
3242 * decl.c (cp_finish_decomp): If processing_template_decl on
3243 non-dependent decl, only set TREE_TYPE on the v[i] decls, but don't
3244 change their DECL_VALUE_EXPR nor cp_finish_decl them. Instead make
3245 sure DECL_VALUE_EXPR is the canonical NULL type ARRAY_REF for tsubst
3247 * pt.c (value_dependent_expression_p) <case VAR_DECL>: For variables
3248 with DECL_VALUE_EXPR, return true if DECL_VALUE_EXPR is type
3251 2017-04-11 Jakub Jelinek <jakub@redhat.com>
3254 * error.c (dump_expr): Handle VEC_COND_EXPR like COND_EXPR.
3256 2017-04-10 Jakub Jelinek <jakub@redhat.com>
3259 * tree.c (lvalue_kind): For COMPONENT_REF with BASELINK second
3260 operand, if it is a static member function, recurse on the
3263 2017-04-10 Marek Polacek <polacek@redhat.com>
3266 * typeck.c (cp_build_binary_op): Use NULL_TREE instead of NULL. Set
3267 ORIG_TYPE earlier and not only when shortening.
3269 2017-04-07 Jason Merrill <jason@redhat.com>
3271 PR c++/80356 - ICE with reference to function template argument.
3273 * pt.c (convert_nontype_argument_function): Adjust type even with a
3274 value-dependent argument.
3276 PR c++/80267 - ICE with nested capture of reference
3278 * pt.c (tsubst_copy): Handle lookup finding a capture proxy.
3280 2017-04-07 Marek Polacek <polacek@redhat.com>
3283 * typeck.c (cp_build_binary_op): Convert COP[01] to ORIG_TYPE.
3286 * call.c (build_over_call): Don't check cxx_dialect.
3287 * cp-gimplify.c (cp_gimplify_init_expr): Don't check cxx_dialect nor
3288 whether SUB is a CONSTRUCTOR.
3289 * init.c (build_new_1): Don't check cxx_dialect.
3290 * tree.c (replace_placeholders): Add a function comment. Return if
3291 not in C++14, or if the object isn't a (member of a) class.
3292 * typeck2.c (store_init_value): Don't check cxx_dialect nor whether
3293 TYPE is CLASS_TYPE_P.
3295 2017-04-05 Jakub Jelinek <jakub@redhat.com>
3298 * pt.c (canonical_type_parameter): Use vec_safe_grow_cleared instead
3299 of a loop doing vec_safe_push of NULL. Formatting fixes.
3300 (rewrite_template_parm): Copy TEMPLATE_PARM_PARAMETER_PACK from oldidx
3301 to newidx before calling canonical_type_parameter on newtype.
3303 2017-04-04 Volker Reichelt <v.reichelt@netcologne.de>
3306 * cxx-pretty-print.c (cxx_pretty_printer::expression): Add
3307 UNARY_PLUS_EXPR case.
3309 2017-04-03 Jason Merrill <jason@redhat.com>
3311 * semantics.c (finish_template_type): Check CLASSTYPE_TEMPLATE_INFO.
3313 2017-04-03 Jonathan Wakely <jwakely@redhat.com>
3315 * class.c (update_vtable_entry_for_fn): Fix typo in comment.
3316 * decl2.c (one_static_initialization_or_destruction): Likewise.
3317 * name-lookup.c (store_bindings): Likewise.
3318 * parser.c (make_call_declarator): Likewise.
3319 * pt.c (check_explicit_specialization): Likewise.
3321 2017-04-03 Jason Merrill <jason@redhat.com>
3323 PR sanitizer/79993 - ICE with VLA initialization from string
3324 PR c++/69487 - wrong VLA initialization from string
3325 * init.c (finish_length_check): Split out from build_vec_init.
3326 (build_vec_init): Handle STRING_CST.
3327 * typeck2.c (split_nonconstant_init): Handle STRING_CST.
3328 (digest_init_r): Don't give a STRING_CST VLA type.
3330 2017-03-31 Jakub Jelinek <jakub@redhat.com>
3333 * cp-gimplify.c (cp_genericize_r): Sanitize INTEGER_CSTs with
3334 REFERENCE_TYPE. Adjust ubsan_maybe_instrument_reference caller
3335 for NOP_EXPR to REFERENCE_TYPE.
3338 * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_AGGREGATE.
3339 * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
3341 * semantics.c (trait_expr_value): Handle CPTK_IS_AGGREGATE.
3342 Remove extraneous parens.
3343 (finish_trait_expr): Handle CPTK_IS_AGGREGATE.
3344 * parser.c (cp_parser_primary_expression): Handle RID_IS_AGGREGATE.
3345 (cp_parser_trait_expr): Likewise.
3347 2017-03-27 Jakub Jelinek <jakub@redhat.com>
3350 * cp-tree.h (cxx_mark_addressable): Add array_ref_p argument.
3351 * typeck.c (cxx_mark_addressable): Likewise. Look through
3352 VIEW_CONVERT_EXPR unless array_ref_p and VCE is from VECTOR_TYPE
3354 (cp_build_array_ref): Pass true as array_ref_p to cxx_mark_addressable.
3356 2017-03-24 Jason Merrill <jason@redhat.com>
3358 PR c++/77339 - ICE with invalid use of alias template.
3359 * pt.c (lookup_template_class_1): Don't try to enter the scope of an
3362 2017-03-24 Marek Polacek <polacek@redhat.com>
3365 * cp-gimplify.c (cp_fold): Strip CLEANUP_POINT_EXPR if the expression
3366 doesn't have side effects.
3368 2017-03-23 Jason Merrill <jason@redhat.com>
3370 PR c++/80150 - ICE with overloaded variadic deduction.
3371 * pt.c (try_one_overload): Remove asserts.
3373 PR c++/77563 - missing ambiguous conversion error.
3374 * call.c (convert_like_real): Use LOOKUP_IMPLICIT.
3376 2017-03-23 Marek Polacek <polacek@redhat.com>
3378 * cp-tree.h: Remove a C_RID_YYCODE reference.
3380 2017-03-22 Jakub Jelinek <jakub@redhat.com>
3383 * semantics.c (finish_omp_clause) <case OMP_CLAUSE_SIMDLEN,
3384 case OMP_CLAUSE_ALIGNED>: Call maybe_constant_value only when not
3385 processing_template_decl.
3387 2017-03-21 Paolo Carlini <paolo.carlini@oracle.com>
3390 * name-lookup.c (pushtag_1): Add check for bogus, non template,
3391 std::initializer_list.
3393 2017-03-21 Jakub Jelinek <jakub@redhat.com>
3396 * init.c (std_placement_new_fn_p, build_new_1): Formatting fixes.
3398 2017-03-21 Ville Voutilainen <ville.voutilainen@gmail.com>
3401 * init.c (std_placement_new_fn_p): New.
3402 (build_new_1): Call it.
3404 2017-03-20 Jason Merrill <jason@redhat.com>
3406 PR c++/80096 - ICE with C++17 non-type auto.
3407 * pt.c (tsubst): Delay tsubst of type of template non-type
3410 PR c++/79519 - ICE with deleted template friend.
3411 * decl.c (grokdeclarator): Complain about misplaced function
3412 definition using =, as well.
3414 PR c++/79640 - infinite recursion with generic lambda.
3415 * pt.c (tsubst_copy) [VAR_DECL]: Register the dummy instantiation
3416 before substituting its initializer.
3418 2017-03-20 Marek Polacek <polacek@redhat.com>
3419 Paolo Carlini <paolo.carlini@oracle.com>
3421 PR c++/80059 - ICE with noexcept and __transaction_atomic
3422 * except.c (build_must_not_throw_expr): Call
3423 instantiate_non_dependent_expr.
3425 2017-03-19 Jason Merrill <jason@redhat.com>
3427 PR c++/80084 - wrong C++17 decomposition by reference of parameter.
3428 * decl.c (cp_finish_decomp): Don't pull out the DECL_INITIAL of a
3429 reference decomposition.
3431 PR c++/80077 - error with constexpr and -fno-elide-constructors.
3432 * constexpr.c (cxx_eval_call_expression): Set ctx->call while
3433 expanding trivial constructor.
3435 2017-03-17 Jason Merrill <jason@redhat.com>
3437 PR c++/78345 - ICE initializing array from lambda.
3438 * init.c (build_aggr_init): Check array initializer.
3439 (build_vec_init): Check the type of a CONSTRUCTOR.
3441 PR c++/80073 - C++17 ICE with virtual base.
3442 * decl.c (xref_basetypes): Also check for indirect vbases.
3444 2017-03-16 Jason Merrill <jason@redhat.com>
3446 * decl.c (start_enum): std::byte aliases anything.
3449 * constexpr.c (lookup_placeholder): Tweak.
3451 2017-03-15 Jason Merrill <jason@redhat.com>
3453 PR c++/80043 - ICE with -fpermissive
3454 * typeck.c (convert_for_assignment): Handle instantiate_type
3455 not giving an error.
3457 2017-03-14 Nathan Sidwell <nathan@acm.org>
3459 PR c++/79393 DR 1658 workaround
3460 * method.c (synthesized_method_base_walk): Inihibit abstract class
3461 virtual base access check here.
3462 (synthesized_method_walk): Not here.
3464 2017-03-13 Nathan Sidwell <nathan@acm.org>
3466 PR c++/79393 DR 1658 workaround
3467 * method.c (synthesized_method_walk): Check vbases of abstract
3468 classes for dtor walk.
3470 2017-03-10 David Malcolm <dmalcolm@redhat.com>
3472 PR translation/79848
3473 * decl.c (grokfndecl): Simplify uses of "%<%s%>" to "%qs".
3475 2017-03-10 Jason Merrill <jason@redhat.com>
3477 PR c++/79960 - alias templates and partial ordering
3478 * pt.c (comp_template_args): Add partial_order parm.
3479 (template_args_equal): Likewise.
3480 (comp_template_args_porder): New.
3481 (get_partial_spec_bindings): Use it.
3483 2017-03-10 Marek Polacek <polacek@redhat.com>
3486 * decl.c (grokdeclarator): Check ATTRLIST before dereferencing it.
3488 2017-03-10 Jakub Jelinek <jakub@redhat.com>
3491 * optimize.c (maybe_thunk_body): Don't ICE if fns[0] is NULL.
3492 Use XALLOCAVEC macro.
3495 * decl.c (finish_enum_value_list): If value is error_mark_node,
3496 don't copy it and change its type.
3497 * init.c (constant_value_1): Return error_mark_node if DECL_INITIAL
3498 of CONST_DECL is error_mark_node.
3500 2017-03-09 Marek Polacek <polacek@redhat.com>
3502 PR c++/79900 - ICE in strip_typedefs
3503 * tree.c (strip_typedefs): Skip the attribute handling if T is
3504 a variant type which hasn't been updated yet.
3506 PR c++/79687 - wrong code with pointer-to-member
3507 * init.c (constant_value_1): Break if the variable has a dynamic
3510 2017-03-08 Jason Merrill <jason@redhat.com>
3512 PR c++/79797 - ICE with self-reference in array DMI.
3513 * constexpr.c (lookup_placeholder): Split out...
3514 (cxx_eval_constant_expression): ...from here.
3516 2017-03-07 Jakub Jelinek <jakub@redhat.com>
3519 * parser.c (cp_parser_omp_cancellation_point,
3520 cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data,
3521 cp_parser_omp_target_update): Change "may only be used in compound
3522 statements" diagnostics, such that the same translatable string is
3523 used for all pragmas.
3524 (cp_parser_pragma): Likewise. Use error_at instead of
3525 cp_parser_error for that diagnostics.
3527 2017-03-06 Marek Polacek <polacek@redhat.com>
3529 PR c++/79796 - ICE with NSDMI and this pointer
3530 * call.c (build_over_call): Handle NSDMI with a 'this' by calling
3531 replace_placeholders.
3533 2017-03-06 Jakub Jelinek <jakub@redhat.com>
3536 * constexpr.c (cxx_eval_statement_list): Treat empty ({ }) like
3539 2017-03-06 Jason Merrill <jason@redhat.com>
3541 Revert "Allow deduction guides to look into primary template."
3542 * cp-tree.h, parser.c, pt.c, search.c: Revert.
3544 2017-03-05 Paolo Carlini <paolo.carlini@oracle.com>
3547 * except.c (build_must_not_throw_expr): Perform the implicit
3548 conversions on the condition.
3550 2017-03-03 Jason Merrill <jason@redhat.com>
3552 * mangle.c (mangle_decl): Check -Wnoexcept-type instead of
3555 Core issues 2273 and 2277
3556 * call.c (joust): Adjust using-declaration tiebreaker to handle
3557 the intermediate base case.
3558 * method.c (strip_inheriting_ctors): Just return the argument if
3559 !flag_new_inheriting_ctors.
3561 2017-03-03 Richard Biener <rguenther@suse.de>
3564 * cp-gimplify.c (simple_empty_class_p): Handle EMPTY_CLASS_EXPR.
3566 2017-03-03 Marek Polacek <polacek@redhat.com>
3569 * typeck.c (string_conv_p): In C++11, always call pedwarn with
3572 2017-03-02 Jason Merrill <jason@redhat.com>
3574 Update overload resolution with deduction guides.
3575 * pt.c (do_class_deduction): Always build the copy guide.
3576 (copy_guide_p, template_guide_p): New.
3577 (build_deduction_guide): Remember the original constructor.
3578 * call.c (joust): Prefer the copy guide and non-template guides.
3580 Allow deduction guides to look into primary template.
3581 * cp-tree.h (struct saved_scope): Add deduction_guide_type.
3582 (struct cp_decl_specifier_seq): Add constructor_p.
3583 * parser.c (cp_parser_decl_specifier_seq): Set constructor_p.
3584 (cp_parser_init_declarator): Check it. Set ctor_dtor_or_conv_p.
3585 Clear deduction_guide_type. Don't handle deduction guide names.
3586 (cp_parser_declarator): Don't clear ctor_dtor_or_conv_p.
3587 (cp_parser_direct_declarator): Likewise. Handle deduction guides.
3588 (cp_parser_member_declaration, cp_parser_cache_defarg)
3589 (cp_parser_objc_class_ivars): Set ctor_dtor_or_conv_p.
3590 * pt.c (tsubst_copy, tsubst_copy_and_build): Revert last change.
3591 (build_deduction_guide): Set deduction_guide_type.
3592 (dependent_scope_p): Check deduction_guide_type.
3593 * search.c (lookup_member): Likewise.
3595 2017-03-02 Jakub Jelinek <jakub@redhat.com>
3598 * init.c (mark_exp_read_r): New function.
3599 (emit_mem_initializers): Use cp_walk_tree with mark_exp_read_r on
3600 whole arguments instead of plain mark_exp_read on TREE_LIST values.
3602 2017-03-01 Jason Merrill <jason@redhat.com>
3604 Class template argument deduction in new-expression
3605 * init.c (build_new): Handle deduction from no initializer.
3606 * parser.c (cp_parser_new_expression): Don't require a single
3607 expression for class template deduction.
3608 * typeck2.c (cxx_incomplete_type_diagnostic): Fix diagnostic for
3609 class template placeholder.
3610 * pt.c (tsubst_copy) [TEMPLATE_DECL]: Handle dependent context.
3611 (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Handle SCOPE_REF.
3612 (redeclare_class_template): Set TEMPLATE_TYPE_PARM_FOR_CLASS.
3614 2017-03-01 Jakub Jelinek <jakub@redhat.com>
3617 * init.c (emit_mem_initializers): When not constructing vbases of
3618 abstract classes, mark arguments as read for
3619 -Wunused-but-set-parameter.
3621 2017-02-28 Jason Merrill <jason@redhat.com>
3623 Class template argument deduction refinements
3624 * call.c (joust): Move deduction guide tiebreaker down.
3625 * decl.c (start_decl_1, cp_finish_decl, grokdeclarator): Allow class
3626 deduction with no initializer.
3627 * pt.c (build_deduction_guide): Handle implicit default/copy ctor.
3628 (do_class_deduction): Use that rather than special case.
3629 (do_auto_deduction): Handle null initializer.
3631 2017-02-28 Jakub Jelinek <jakub@redhat.com>
3633 * decl.c (find_decomp_class_base): Use cond ? G_("...") : G_("...")
3634 instead of just cond ? "..." : "...".
3635 (grokdeclarator): Likewise.
3636 (build_enumerator): Likewise.
3637 * init.c (build_new_1): Likewise.
3638 * call.c (build_new_method_call_1): Likewise.
3639 * parser.c: Include intl.h.
3640 (cp_parser_oacc_enter_exit_data): Use %s and ternary operator only for
3641 "enter"/"exit" keyword.
3642 (cp_finalize_oacc_routine): Don't use %s to supply portions of the
3645 2017-02-27 Jason Merrill <jason@redhat.com>
3647 PR c++/71568 - SFINAE forming pointer to member function
3648 * init.c (build_offset_ref): Check the return value of
3649 perform_or_defer_access_check.
3651 2017-02-27 Marek Polacek <polacek@redhat.com>
3653 * decl.c (expand_static_init): Add missing } in a comment.
3655 2017-02-27 Volker Reichelt <v.reichelt@netcologne.de>
3657 * init.c: Include intl.h.
3658 (build_new_1): Move message strings into pedwarn to make them
3659 -Wformat-security friendly. Mark string for translation.
3660 * pt.c (tsubst_copy_and_build): Mark string for translation.
3661 Make the pointer const.
3662 * semantics.c (finish_id_expression): Mark strings for translation.
3664 2017-02-25 Jakub Jelinek <jakub@redhat.com>
3666 * call.c (build_op_delete_call): Make msg1 and msg2 const.
3668 2017-02-24 Jakub Jelinek <jakub@redhat.com>
3671 * call.c (build_over_call): Call check_function_arguments even for
3672 -Wrestrict, adjust check_function_arguments caller.
3673 * parser.c (cp_parser_postfix_expression): Don't handle -Wrestrict
3675 * typeck.c (cp_build_function_call_vec): Adjust
3676 check_function_arguments caller.
3678 2017-02-24 Marek Polacek <polacek@redhat.com>
3680 PR translation/79705
3681 * decl.c (check_redeclaration_exception_specification): Mark a string
3682 for translation. Make the pointer const.
3684 2017-02-23 Paolo Carlini <paolo.carlini@oracle.com>
3687 * pt.c (register_specialization): Check duplicate_decls return value
3688 for error_mark_node and pass it back.
3690 2017-02-22 Jason Merrill <jason@redhat.com>
3692 PR c++/79679 - missing destructor for argument
3693 * call.c (build_over_call): Don't pass tf_no_cleanup to argument
3696 * pt.c (do_class_deduction): Handle 0 argument case.
3698 2017-02-22 Jakub Jelinek <jakub@redhat.com>
3701 * parser.c (cp_parser_omp_teams, cp_parser_omp_target): Use
3702 SET_EXPR_LOCATION on OMP_TARGET/OMP_TEAMS tree.
3703 * constexpr.c (potential_constant_expression_1): Handle
3704 OMP_*, OACC_* and CILK_* trees. Use error_at with
3705 EXPR_LOC_OR_LOC (t, input_location) computed early
3706 instead of error, or error_at with location_of (t).
3708 2017-02-22 Marek Polacek <polacek@redhat.com>
3711 * parser.c (cp_parser_std_attribute_spec): Don't build the attribute
3712 if the alignas expression is erroneous.
3713 * pt.c (tsubst_attribute): If tsubst_pack_expansion fails, return
3717 * semantics.c (finish_underlying_type): Bail out for incomplete enums.
3719 2017-02-21 Jason Merrill <jason@redhat.com>
3721 PR c++/50308 - wrong deprecated warning with ADL
3722 PR c++/17729 - duplicate deprecated warning
3723 * semantics.c (finish_id_expression): Only call mark_used on a
3724 function if we aren't building a call.
3726 PR c++/41727 - ICE with partial spec of partial instantiation
3727 * pt.c (process_partial_specialization): For now, don't check more
3728 specialized if there is more than one level of args.
3730 2017-02-21 Marek Polacek <polacek@redhat.com>
3733 * cp-tree.h (maybe_reject_flexarray_init): Declare.
3734 * init.c (maybe_reject_flexarray_init): No longer static.
3735 Add check for current_function_decl.
3736 * parser.c (cp_parser_late_parse_one_default_arg): Reject
3737 a default mem-initializer for a flexible array.
3739 2017-02-21 Jakub Jelinek <jakub@redhat.com>
3740 Paolo Carlini <paolo.carlini@oracle.com>
3743 * decl.c (cp_finish_decomp): Don't set decl's type to error_mark_node
3745 * pt.c (tsubst_decomp_names): Return error_mark_node if the first
3746 decl after the decomposition artificial decl has error_mark_node.
3747 * decl2.c (prune_vars_needing_no_initialization): Use error_operand_p
3748 instead of just == error_mark_node comparison.
3750 2017-02-21 Jakub Jelinek <jakub@redhat.com>
3753 * decl.c: Include gimplify.h.
3754 (cp_finish_decomp): Make sure there is no sharing of trees
3755 in between DECL_VALUE_EXPR of decomposition decls.
3758 * constexpr.c (cxx_eval_array_reference): Diagnose negative subscript.
3761 * constexpr.c (cxx_eval_store_expression): If *valp is a PTRMEM_CST,
3762 call cplus_expand_constant on it first.
3764 2017-02-19 Jason Merrill <jason@redhat.com>
3766 PR c++/78139 - destructor needed by new-expression
3767 * call.c (build_special_member_call): Use tf_no_cleanup.
3769 PR c++/78282 - auto template and pack expansion
3770 * pt.c (find_parameter_packs_r): Don't walk into the type of
3771 templates other than template template-parameters.
3773 PR c++/79606 - ICE with this->base_member in NSDMI
3774 * class.c (build_base_path): Check processing_template_decl.
3776 PR c++/79607 - ICE with T{} initializer
3777 * decl.c (type_dependent_init_p): Check the type of a CONSTRUCTOR.
3779 PR c++/79566 - elaborated-type-specifier in range for
3780 * parser.c (cp_parser_simple_declaration): Fix check for type
3783 PR c++/79400 - confusing suggestion of 'noexcept'
3784 * parser.c (cp_parser_exception_specification_opt): Remove
3785 suggestion for deprecated dynamic exception-specification.
3787 PR c++/79470 - partial ordering with reference parameters
3788 * pt.c (unify) [INDIRECT_REF]: Handle pack expansions.
3790 PR c++/79500 - ICE with non-template deduction guide
3791 * pt.c (do_class_deduction): Use STRIP_TEMPLATE rather than
3792 DECL_TEMPLATE_RESULT.
3794 PR c++/79580 - ICE with compound literal
3795 * parser.c (cp_parser_class_head): If we're in the middle of an
3796 expression, use ts_within_enclosing_non_class.
3798 PR c++/79503 - inherited ctor taking base class
3799 * call.c (add_function_candidate): Also check that
3800 DECL_INHERITED_CTOR_BASE is reference-related to the parameter type.
3802 2017-02-19 Paolo Carlini <paolo.carlini@oracle.com>
3805 * typeck.c (cxx_alignas_expr): Reject a non-integral alignas
3808 2017-02-19 Eric Fiselier <eric@efcs.ca>
3809 Jonathan Wakely <jwakely@redhat.com>
3812 * parser.c (cp_parser_unqualified_id): Use OPT_Wliteral_suffix to
3813 control warning about literal suffix identifiers without a leading
3816 2017-02-17 Jason Merrill <jason@redhat.com>
3818 PR c++/79508 - lookup error with member template
3819 * parser.c (cp_parser_template_name): Clear
3820 parser->context->object_type if we aren't doing lookup.
3822 PR c++/78690 - ICE with using and global type with same name
3823 * pt.c (type_dependent_object_expression_p): True for
3826 PR c++/79549 - C++17 ICE with non-type auto template parameter pack
3827 * pt.c (convert_template_argument): Just return an auto arg pack.
3828 (tsubst_template_args): Don't tsubst an auto pack type.
3830 PR c++/79556 - C++17 ICE with non-type auto
3831 * pt.c (do_auto_deduction): Don't try to deduce from null type.
3833 PR c++/79533 - C++17 ICE with temporary cast to reference
3834 * call.c (build_over_call): Conversion to a reference prevents copy
3837 2017-02-16 Jakub Jelinek <jakub@redhat.com>
3838 Jason Merrill <jason@redhat.com>
3840 PR c++/79502 - lost nodiscard attribute
3841 * pt.c (apply_late_template_attributes): Do apply non-dependent
3842 attributes to types.
3844 2017-02-16 Jason Merrill <jason@redhat.com>
3846 PR c++/78572 - ICE with self-modifying array initializer
3847 * constexpr.c (cxx_eval_store_expression): The object we're
3848 initializing is outside the constant-expression.
3849 (cxx_eval_call_expression): Set ctx->call.
3851 PR c++/79050 - ICE with undeduced auto and LTO
3852 * decl.c (poplevel): Remove undeduced auto decls.
3854 2017-02-16 Jakub Jelinek <jakub@redhat.com>
3857 * parser.c (cp_parser_omp_target): For -fopenmp-simd
3858 ignore #pragma omp target even when not followed by identifier.
3860 2017-02-15 Jason Merrill <jason@redhat.com>
3861 Jakub Jelinek <jakub@redhat.com>
3863 PR c++/79464 - ICE in IPA with omitted constructor parms
3864 * class.c (build_clone): Also omit parms from TYPE_ARG_TYPES.
3865 (adjust_clone_args): Adjust.
3866 (add_method): Remember omitted parms.
3867 * call.c (add_function_candidate): Likewise.
3868 * mangle.c (write_method_parms): Likewise.
3869 * method.c (ctor_omit_inherited_parms): Return false if there are no
3872 2017-02-15 Martin Sebor <msebor@redhat.com>
3875 * init.c (maybe_reject_flexarray_init): New function.
3876 (perform_member_init): Call it.
3878 2017-02-15 Jakub Jelinek <jakub@redhat.com>
3881 * parser.c (cp_parser_std_attribute): Don't pedwarn about
3882 [[deprecated]] with -std=c++11 and [[fallthrough]] with
3883 -std=c++11 and -std=c++14.
3886 * decl.c (grokdeclarator): For static data members, handle thread_p
3887 only after handling inline.
3889 2017-02-14 Marek Polacek <polacek@redhat.com>
3893 * parser.c (cp_parser_postfix_dot_deref_expression): Avoid
3894 clobbering if the postfix expression isn't an EXPR_P.
3896 2017-02-13 Jason Merrill <jason@redhat.com>
3898 PR c++/79461 - ICE with lambda in constexpr constructor
3899 * constexpr.c (build_data_member_initialization): Ignore
3900 initialization of a local variable.
3902 2017-02-13 Jakub Jelinek <jakub@redhat.com>
3904 * init.c (warn_placement_new_too_small): Add missing space in
3906 * parser.c (cp_parser_oacc_declare): Likewise.
3907 * mangle.c (maybe_check_abi_tags): Likewise.
3910 * typeck.c (cp_build_modify_expr): Handle properly COMPOUND_EXPRs
3911 on lhs that have {PRE{DEC,INC}REMENT,MODIFY,MIN,MAX,COND}_EXPR
3912 in the rightmost operand.
3914 2017-02-13 Nathan Sidwell <nathan@acm.org>
3916 PR c++/79296 - ICE mangling localized template instantiation
3917 * decl2.c (determine_visibility): Use template fn context for
3918 local class instantiations.
3920 2017-02-11 Jason Merrill <jason@redhat.com>
3922 PR c++/77659 - ICE with new and C++14 aggregate NSDMI
3923 * init.c (build_new): Make backups of any CONSTRUCTORs in init.
3924 (build_new_1): Use replace_placeholders.
3925 * tree.c (replace_placeholders_t): Also track whether we've seen a
3927 (replace_placeholders, replace_placeholders_r): Adjust.
3928 * cp-tree.h: Adjust.
3930 PR c++/77790 - ICE with auto function in C++11 mode
3931 * decl.c (undeduced_auto_decl): Remove C++14 limitation.
3932 (require_deduced_type): Add complain parm, return bool.
3933 * cp-tree.h: Adjust.
3934 * decl2.c (mark_used): Use require_deduced_type.
3936 2017-02-10 Jason Merrill <jason@redhat.com>
3938 PR c++/78908 - template ops and bitfields
3939 * tree.c (build_min_non_dep): Use unlowered_expr_type.
3941 PR c++/78897 - constexpr union
3942 * constexpr.c (cxx_eval_store_expression): A store to a union member
3943 erases a previous store to another member.
3945 PR c++/71285 - member of fold-expression
3946 * semantics.c (finish_unary_fold_expr)
3947 (finish_binary_fold_expr): Use null type for fold-expressions.
3949 PR c++/79401 - protected inherited constructor
3950 * call.c (enforce_access): For inheriting constructor, find a base
3951 binfo in the path we already have.
3953 2017-02-10 Marek Polacek <polacek@redhat.com>
3956 * pt.c (type_dependent_expression_p): Check if the expression type
3960 * cvt.c (ocp_convert): Add a sentinel against -Wint-in-bool-context
3961 if warnings shouldn't be given.
3963 2017-02-10 Paolo Carlini <paolo.carlini@oracle.com>
3966 * pt.c (tsubst_decl): Don't try to preserve a typedef that names
3967 an error_mark_node as type.
3969 2017-02-09 Jakub Jelinek <jakub@redhat.com>
3970 Jason Merrill <jason@redhat.com>
3973 * pt.c (instantiate_class_template_1): Copy CLASSTYPE_NON_AGGREGATE
3974 from pattern to type.
3976 2017-02-09 Jason Merrill <jason@redhat.com>
3978 PR c++/79316 - default argument in deduction guide
3979 PR c++/79350 - explicit deduction guide
3980 * parser.c (cp_parser_constructor_declarator_p)
3981 (cp_parser_direct_declarator): Parse deduction guides more like
3983 * cp-tree.h (enum special_function_kind): Add sfk_deduction_guide.
3984 * tree.c (special_function_p): Return it.
3985 * decl.c (check_special_function_return_type): Handle it.
3986 (grokdeclarator, grokfndecl): Adjust.
3987 (cp_finish_decl): Pass flags to do_auto_deduction.
3988 * error.c (dump_decl_name): Use TFF_UNQUALIFIED_NAME.
3989 * pt.c (dguide_name_p): Take a const_tree.
3990 (do_class_deduction): Handle explicit.
3991 (do_auto_deduction): Pass flags through.
3992 (build_deduction_guide): Copy explicit flag.
3994 2017-02-09 Jakub Jelinek <jakub@redhat.com>
3997 * parser.c (cp_parser_omp_ordered): Don't check for non-pragma_stmt
3998 non-pragma_compound context here.
3999 (cp_parser_omp_target): Likewise.
4000 (cp_parser_pragma): Don't call push_omp_privatization_clauses and
4001 parsing for ordered and target omp pragmas in non-pragma_stmt
4002 non-pragma_compound contexts.
4005 * parser.c (cp_parser_oacc_declare): Formatting fix.
4006 (cp_parser_omp_declare_target): Don't invoke symtab_node::get on
4007 automatic variables.
4009 2016-02-09 Nathan Sidwell <nathan@codesourcery.com>
4010 Chung-Lin Tang <cltang@codesourcery.com>
4012 * parser.c (cp_parser_oacc_clause_tile): Disallow collapse. Fix
4013 parsing. Parse constant expression. Remove semantic checking.
4014 (cp_parser_omp_clause_collapse): Disallow tile.
4015 (cp_parser_omp_for_loop): Deal with tile clause. Don't emit a parse
4016 error about missing for after already emitting one. Use more
4017 conventional for idiom for unbounded loop.
4018 * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_TILE.
4019 * semantics.c (finish_omp_clauses): Correct TILE semantic check.
4020 (finish_omp_for): Deal with tile clause.
4022 2017-02-07 Nathan Sidwell <nathan@acm.org>
4024 * method.c (synthesized_method_base_walk): New. Broken out of ...
4025 (synthesized_method_walk): ... here. Call it. Cleanup
4028 2017-02-07 Patrick Palka <ppalka@gcc.gnu.org>
4031 * typeck2.c (process_init_constructor_union): Consider only
4032 FIELD_DECLs when looking for an NSDMI.
4034 2017-02-06 Jason Merrill <jason@redhat.com>
4036 PR c++/71193 - incomplete types in templates
4037 * parser.c (cp_parser_postfix_dot_deref_expression): In a template
4038 handle incomplete type by pedwarning and then treating as dependent.
4040 2017-02-06 Jakub Jelinek <jakub@redhat.com>
4043 * constexpr.c (cxx_eval_constant_expression): Handle ANNOTATE_EXPR.
4044 (potential_constant_expression_1): Likewise.
4047 * tree.c (build_min_non_dep_op_overload): For POST{INC,DEC}REMENT_EXPR
4048 allow one fewer than expected arguments if flag_permissive.
4051 * decl.c (cp_finish_decomp): On error set decl type to error_mark_node.
4052 * pt.c (tsubst_expr): Don't call tsubst_decomp_names on decompositions
4053 with error_mark_node type.
4055 2017-02-03 Jason Merrill <jason@redhat.com>
4057 PR c++/78689 - ICE on constructor with label
4058 * optimize.c (maybe_clone_body): Replace omitted parameters with
4060 * class.c (build_clone): Fix logic for omitting inherited parms.
4062 PR c++/12245 - excessive memory use
4063 * constexpr.c (maybe_constant_value): Fold maybe_constant_value_1
4064 back in. Don't cache constants.
4065 (maybe_constant_init): Don't cache constants.
4067 PR c++/79294 - ICE with invalid template argument
4068 * pt.c (convert_nontype_argument_function): Check value-dependence.
4069 (convert_nontype_argument): Don't check it here for function ptrs.
4071 2017-02-02 Richard Biener <rguenther@suse.de>
4074 * cp-gimplify.c (cp_fold): When folding a CONSTRUCTOR copy
4075 it lazily on the first changed element only and copy it
4076 fully upfront, only storing changed elements.
4078 2017-02-02 Paolo Carlini <paolo.carlini@oracle.com>
4081 * decl2.c (grokbitfield): In case of error don't set-up DECL_INITIAL
4084 2017-01-31 Jakub Jelinek <jakub@redhat.com>
4087 * error.c (dump_expr) <case COMPONENT_REF>: Don't print .
4090 2017-01-31 David Malcolm <dmalcolm@redhat.com>
4093 * name-lookup.c (suggest_alternative_in_explicit_scope): Resolve
4094 any namespace aliases.
4096 2017-01-31 Nathan Sidwell <nathan@acm.org>
4099 * typeck.c (build_ptrmemfunc_access_expr): Set TREE_NO_WARNING.
4103 * pt.c: (instantiate_decl): Push to top level when current
4104 function scope doesn't match. Only push lmabda scope stack when
4107 * cp-tree.h (instantiate_decl): Make defer_ok bool.
4108 * pt.c: Fix instantiate_decl calls to pass true/false not 0/1
4109 (instantiate_decl): Simplify and reorder state saving and restoration.
4112 * lambda.c (maybe_generic_this_capture): Deal with template-id-exprs.
4113 * semantics.c (finish_member_declaration): Assert class is being
4116 2017-01-30 Alexandre Oliva <aoliva@redhat.com>
4118 Introduce C++ support in libcc1.
4119 * cp-tree.h (struct lang_identifier): Add oracle_looked_up.
4120 (ansi_opname): Rename to...
4121 (cp_operator_id): ... this. Adjust all callers.
4122 (ansi_assopname): Rename to...
4123 (cp_assignment_operator_id): ... this. Adjust all callers.
4124 (cp_literal_operator_id): Declare.
4125 (set_global_friend): Declare.
4126 (is_global_friend): Declare.
4127 (enum cp_oracle_request): New type.
4128 (cp_binding_oracle_function): New type.
4129 (cp_binding_oracle): Declare.
4130 (cp_finish_injected_record_type): Declare.
4131 * friend.c (global_friend): New var.
4132 (set_global_friend): New fn.
4133 (is_global_friend): New fn.
4134 (is_friend): Call is_global_friend.
4135 * name-lookup.c (cp_binding_oracle): New var.
4136 (query_oracle): New fn.
4137 (qualified_lookup_using_namespace): Call query_oracle.
4138 (lookup_name_real_1): Likewise.
4139 * parser.c (cp_literal_operator_id): Drop static.
4140 * search.c (friend_accessible_p): Call is_global_friend.
4141 * semantics.c (is_this_parameter): Accept a variable if the
4142 binding oracle is enabled.
4144 2017-01-27 Jason Merrill <jason@redhat.com>
4146 PR c++/78771 - ICE with inherited constructor.
4147 * call.c (build_over_call): Call deduce_inheriting_ctor here.
4148 * pt.c (tsubst_decl): Not here.
4149 * class.c (add_method): Or here.
4150 * method.c (deduce_inheriting_ctor): Handle clones.
4151 (implicitly_declare_fn): Don't deduce inheriting ctors yet.
4153 2017-01-27 Adam Butcher <adam@jessamine.co.uk>
4156 * cp/parser.c (parsing_default_capturing_generic_lambda_in_template):
4158 * cp/cp-tree.h: Declare it.
4159 * cp/semantics.c (finish_id_expression): Resolve names within a default
4160 capturing generic lambda defined within a template prior to
4161 instantiation to allow for captures to be added to the closure type.
4163 2017-01-26 Jakub Jelinek <jakub@redhat.com>
4166 * cp-tree.def (OFFSETOF_EXPR): Bump number of operands to 2.
4167 * cp-tree.h (finish_offsetof): Add OBJECT_PTR argument.
4168 * parser.c (cp_parser_builtin_offsetof): Pass result of
4169 build_static_cast of null_pointer_node to finish_offsetof.
4170 * semantics.c (finish_offsetof): Add OBJECT_PTR argument, use
4171 it for -Winvalid-offsetof pedwarn instead of trying to guess
4172 original offsetof type from EXPR. Save OBJECT_PTR as a new
4173 second operand to OFFSETOF_EXPR.
4174 * pt.c (tsubst_copy_and_build) <case OFFSETOF_EXPR>: Adjust
4175 finish_offsetof caller, pass the second operand of OFFSETOF_EXPR
4178 2017-01-26 Jason Merrill <jason@redhat.com>
4180 * name-lookup.c (parse_using_directive): Deprecate strong using.
4182 PR c++/79176 - lambda ICE with -flto -Os
4183 * decl2.c (vague_linkage_p): Handle decloned 'tors.
4184 * tree.c (decl_linkage): Likewise.
4186 2017-01-25 Martin Sebor <msebor@redhat.com>
4188 * decl.c (grokdeclarator): Fix a typo in a comment.
4190 2017-01-25 Jakub Jelinek <jakub@redhat.com>
4193 * decl.c (cp_finish_decomp): Disallow memberwise decomposition of
4197 * parser.c (cp_parser_lambda_declarator_opt): Pedwarn with
4198 OPT_Wpedantic on lambda templates for -std=c++14 and higher.
4200 2017-01-25 Maxim Ostapenko <m.ostapenko@samsung.com>
4203 * decl.c (cxx_init_decl_processing): Pass main_input_filename
4204 to build_translation_unit_decl.
4206 2017-01-24 Jakub Jelinek <jakub@redhat.com>
4209 * cp-gimplify.c (cp_genericize_r): Add result of
4210 convert_from_reference on invisiref parm to p_set.
4212 2017-01-24 Nathan Sidwell <nathan@acm.org>
4214 PR c++/78469 - defaulted ctor and inaccessible dtor
4215 * cp-tree.h (tsubst_flags): Add tf_no_cleanup.
4216 * init.c (build_new_1): Pass tf_no_cleanup to build_value_init.
4217 * tree.c (build_target_expr): Check tf_no_cleanup.
4219 PR c++/79118 - anon-members and constexpr
4220 * constexpr.c (cx_check_missing_mem_inits): Caller passes type not
4221 ctor decl. Recursively check anonymous members.
4222 (register_constexpr_fundef): Adjust cx_check_missing_mem_inits
4224 (explain_invalid_constexpr_fn): Likewise.
4226 2017-01-23 Nathan Sidwell <nathan@acm.org>
4228 PR c++/71710 - template using directive of field
4229 * pt.c (tsubst_copy_and_build [COMPONENT_REF]): Move FIELD_DECL
4232 PR c++/71406 - ICE with scope-ref'd template id exprs
4234 * typeck.c (finish_class_member_access_expr): Break up SCOPE_REF
4235 before breaking up TEMPLATE_ID_EXPR.
4237 2017-01-20 Nathan Sidwell <nathan@acm.org>
4239 PR c++/78495 - wrong code inherited ctor and invisi-ref parm
4240 * cp-gimplify.c (cp_generize_r): Don't skip thunks.
4242 2017-01-20 David Malcolm <dmalcolm@redhat.com>
4246 * cp-tree.h (suggest_alternatives_for): Add bool param.
4247 (suggest_alternative_in_explicit_scope): New decl.
4248 * error.c (qualified_name_lookup_error): When SCOPE is a namespace
4249 that isn't the global one, call new function
4250 suggest_alternative_in_explicit_scope, only calling
4251 suggest_alternatives_for if it fails, and disabling near match
4252 searches fort that case. When SCOPE is the global namespace,
4253 pass true for new param to suggest_alternatives_for to allow for
4255 * lex.c (unqualified_name_lookup_error): Pass true for new param
4256 to suggest_alternatives_for.
4257 * name-lookup.c (consider_binding_level): Add forward decl.
4258 (suggest_alternatives_for): Add "suggest_misspellings" param,
4259 using it to conditionalize the fuzzy name-lookup code.
4260 (suggest_alternative_in_explicit_scope): New function.
4261 * parser.c (cp_parser_primary_expression): When calling
4262 finish_id_expression, pass location of id_expression rather
4263 than that of id_expr_token.
4264 (cp_parser_id_expression): Convert local "unqualified_id" from
4265 tree to cp_expr to avoid implicitly dropping location information.
4267 2017-01-20 Marek Polacek <polacek@redhat.com>
4270 * call.c (build_conditional_expr_1): Warn about duplicated branches.
4271 * semantics.c (finish_expr_stmt): Build statement using the proper
4274 2017-01-19 Jason Merrill <jason@redhat.com>
4276 US 20 - forwarding references and class template argument deduction
4277 * cp-tree.h (TEMPLATE_TYPE_PARM_FOR_CLASS): New.
4278 * pt.c (push_template_decl_real): Set it.
4279 (maybe_adjust_types_for_deduction): Check it.
4280 (rewrite_template_parm): Copy it.
4282 US 19 - deduction guides and constructors
4283 * call.c (joust): Prefer deduction guides to constructors.
4284 * pt.c (build_deduction_guide): Set DECL_ARTIFICIAL.
4285 (deduction_guide_p): Check DECL_P.
4287 * decl.c (check_initializer): Always use build_aggr_init for array
4290 PR c++/79130 - decomposition and direct-initialization
4291 * init.c (build_aggr_init): Communicate direct-initialization to
4293 (build_vec_init): Check for array copy sooner.
4294 * parser.c (cp_parser_decomposition_declaration): Remove call to
4295 build_x_compound_expr_from_list.
4297 2017-01-18 Jason Merrill <jason@redhat.com>
4299 PR c++/68666 - member variable template-id
4300 * typeck.c (finish_class_member_access_expr): Handle variable
4302 * pt.c (lookup_and_finish_template_variable): No longer static.
4303 * cp-tree.h: Declare it.
4305 2017-01-18 Nathan Sidwell <nathan@acm.org>
4308 * call.c (build_over_call): When checking ellipsis conversions for
4309 an inherited ctor, make sure there is at least one conversion.
4311 2017-01-18 Jason Merrill <jason@redhat.com>
4313 PR c++/78894 - ICE with class deduction and default arg
4314 * pt.c (build_deduction_guide): Set DECL_PRIMARY_TEMPLATE.
4316 2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
4319 * mangle.c (write_discriminator): Reorganize abi warning check.
4321 2017-01-18 Nathan Sidwell <nathan@acm.org>
4323 * cp-tree.h: Clarify exception spec node comment.
4324 * except.c (nothrow_spec_p): Simplify by checking node-equality.
4327 * mangle.c (write_exception_spec): Check nothrow explicitly.
4328 (write_encoding): Don't increment processing_template_decl around
4331 2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
4334 * mangle.c (write_template_args): Add "on" for operator names.
4336 2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
4339 * mangle.c (write_discriminator): Handle discriminator >= 10.
4341 2017-01-17 Nathan Sidwell <nathan@acm.org>
4344 * cp-tree.h (maybe_generic_this_capture): Declare.
4345 * lambda.c (resolvable_dummy_lambda): New, broken out of ...
4346 (maybe_resolve_dummy): ... here. Call it.
4347 (maybe_generic_this_capture): New.
4348 * parser.c (cp_parser_postfix_expression): Speculatively capture
4349 this in generic lambda in unresolved member function call.
4350 * pt.c (tsubst_copy_and_build): Force hard error from failed
4351 member function lookup in generic lambda.
4353 2017-01-17 Aldy Hernandez <aldyh@redhat.com>
4356 * cp-array-notation.c (expand_array_notation_exprs): Handle
4359 2017-01-11 Jason Merrill <jason@redhat.com>
4361 PR c++/78337 - ICE on invalid with generic lambda
4362 * semantics.c (process_outer_var_ref): Check if containing_function
4363 is null. Move inform call under complain test.
4365 2017-01-11 Nathan Sidwell <nathan@acm.org>
4368 * name-lookup.c (set_namespace_binding_1): An overload of 1 decl
4371 2017-01-11 Nathan Sidwell <nathan@acm.org>
4373 * name-lookup.c (push_overloaded_decl_1): Refactor OVERLOAD creation.
4375 2017-01-11 Jakub Jelinek <jakub@redhat.com>
4378 * parser.c (cp_parser_std_attribute_spec): Remove over-eager
4379 assertion. Formatting fix.
4382 * decl2.c (c_parse_final_cleanups): Set flag_syntax_only to 1 after
4385 2017-01-10 David Malcolm <dmalcolm@redhat.com>
4388 * parser.c (cp_parser_class_specifier_1): Only suggest inserting
4389 a missing semicolon if we have a valid insertion location for
4392 2017-01-10 Jason Merrill <jason@redhat.com>
4394 FI 20, decomposition declaration with parenthesized initializer.
4395 * parser.c (cp_parser_decomposition_declaration): Use
4396 cp_parser_initializer.
4398 2017-01-09 Jason Merrill <jason@redhat.com>
4400 Implement P0195R2, C++17 variadic using.
4401 * parser.c (cp_parser_using_declaration): Handle ellipsis and comma.
4402 * pt.c (tsubst_decl): Handle pack expansion in USING_DECL_SCOPE.
4403 * error.c (dump_decl): Likewise.
4405 2017-01-09 Jakub Jelinek <jakub@redhat.com>
4407 PR translation/79019
4408 PR translation/79020
4409 * semantics.c (finish_omp_clauses): Add missing whitespace to
4410 translatable strings.
4411 * cp-cilkplus.c (cpp_validate_cilk_plus_loop_aux): Fix comment typo.
4413 2017-01-07 Jason Merrill <jason@redhat.com>
4415 PR c++/78948 - instantiation from discarded statement
4416 * parser.h (struct cp_parser): Remove in_discarded_stmt field.
4417 * cp-tree.h (in_discarded_stmt): Declare it.
4418 (struct saved_scope): Add discarded_stmt bitfield.
4419 (in_discarded_stmt): New macro.
4420 * decl2.c (mark_used): Check it.
4421 * parser.c (cp_parser_selection_statement): Adjust.
4422 (cp_parser_jump_statement): Adjust.
4424 2017-01-05 Jakub Jelinek <jakub@redhat.com>
4427 * decl.c (cp_finish_decomp): Remove probe variable, if tt is
4428 REFERENCE_REF_P, set tt to its operand.
4431 * class.c (check_field_decls): Diagnose REFERENCE_TYPE fields in
4432 unions even for C++11 and later.
4434 2017-01-05 Nathan Sidwell <nathan@acm.org>
4437 * pt.c (convert_nontype_argument): Don't try and see if integral
4438 or enum expressions are constants prematurely.
4440 2017-01-04 Marek Polacek <polacek@redhat.com>
4443 * typeck.c (cp_build_binary_op): Warn when a pointer is compared with
4444 a zero character literal.
4446 2017-01-04 Jakub Jelinek <jakub@redhat.com>
4449 * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
4453 * parser.c (cp_parser_simple_declaration): Only complain about
4454 inconsistent auto deduction if auto_result doesn't use auto.
4456 * parser.c (cp_parser_simple_declaration): Diagnose function
4457 declaration among more than one init-declarators with auto
4461 * parser.c (cp_lexer_previous_token): Use vec_safe_address in the
4462 assertion, as lexer->buffer may be NULL.
4464 2017-01-04 Marek Polacek <polacek@redhat.com>
4468 * constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT.
4470 2017-01-04 Nathan Sidwell <nathan@acm.org>
4473 * cp-tree.h (DECLTYPE_FOR_REF_CAPTURE): New.
4474 (lambda_capture_field_type): Update prototype.
4475 * lambda.c (lambda_capture_field_type): Add is_reference parm.
4476 Add referenceness here.
4477 (add_capture): Adjust lambda_capture_field_type call, refactor
4479 * pt.c (tsubst): Adjust lambda_capture_field_type call.
4481 2017-01-01 Jakub Jelinek <jakub@redhat.com>
4483 Update copyright years.
4485 Copyright (C) 2017 Free Software Foundation, Inc.
4487 Copying and distribution of this file, with or without modification,
4488 are permitted in any medium without royalty provided the copyright
4489 notice and this notice are preserved.