]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/cp/ChangeLog
18e4b9997b6bdeeccd6bb62e88dc0b8c1b61f39c
[thirdparty/gcc.git] / gcc / cp / ChangeLog
1 2017-10-04 Jakub Jelinek <jakub@redhat.com>
2
3 PR c++/82373
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.
6
7 2017-10-04 Jason Merrill <jason@redhat.com>
8
9 PR c++/81525 - broken handling of auto in generic lambda.
10 * pt.c (tsubst_decl) [VAR_DECL]: Use strip_innermost_template_args.
11
12 2017-10-04 Nathan Sidwell <nathan@acm.org>
13
14 * call.c (convert_arg_to_ellipsis): Correct comment about passing
15 by reference.
16
17 2017-10-02 Richard Sandiford <richard.sandiford@linaro.org>
18
19 * constexpr.c (cxx_eval_store_expression): Use wi::to_widest
20 when comparing the array bounds with an ARRAY_REF index.
21
22 2017-09-30 Paolo Carlini <paolo.carlini@oracle.com>
23
24 PR c++/68754
25 * method.c (defaulted_late_check): Early return if the defaulted
26 declaration does not match the expected signature.
27
28 2017-09-29 Jakub Jelinek <jakub@redhat.com>
29
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
38 DECL_C_BIT_FIELDs.
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
43 cp_finish_decl.
44 * pt.c (tsubst_decl): Handle DECL_INITIAL for all FIELD_DECLs, not
45 just non-bitfields.
46
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
50 DECL_INITIAL.
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.
56
57 * parser.c (cp_parser_member_declaration): Parse attributes before
58 colon of a bitfield in addition to after colon.
59
60 * Make-lang.in (check-c++-all): Test also c++2a.
61
62 2017-09-28 Jason Merrill <jason@redhat.com>
63
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.
76
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.
92
93 * call.c (build_special_member_call): Use the return value of
94 mark_lvalue_use.
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.
99
100 2017-09-22 Eric Botcazou <ebotcazou@adacore.com>
101
102 PR bootstrap/81926
103 * cp-objcp-common.c (cp_get_debug_type): Do only one lookup.
104
105 2017-09-22 Jakub Jelinek <jakub@redhat.com>
106
107 PR sanitizer/81929
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.
113
114 2017-09-22 David Malcolm <dmalcolm@redhat.com>
115
116 * call.c (get_fndecl_argument_location): New function.
117 (convert_like_real): Use it when complaining about argument type
118 mismatches.
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
126 errors.
127 (cp_parser_parameter_declaration): Generate a location for the
128 parameter and pass to make_parameter_declarator.
129
130 2017-09-20 Nathan Sidwell <nathan@acm.org>
131
132 * name-lookup.c (member_name_cmp): Use DECL_UID for final
133 ordering.
134
135 2017-09-20 Jakub Jelinek <jakub@redhat.com>
136
137 P0409R2 - allow lambda capture [=, this]
138 * parser.c (cp_parser_lambda_introducer): For cxx2a don't pedwarn on
139 redundant [=, this].
140
141 2017-09-18 Jason Merrill <jason@redhat.com>
142
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.
146
147 2017-09-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
148 Paolo Carlini <paolo.carlini@oracle.com>
149
150 PR c++/64644
151 * decl2.c (finish_anon_union): Complain about "anonymous union with
152 no members" with a pedwarn.
153
154 2017-09-15 Bernd Edlinger <bernd.edlinger@hotmail.de>
155
156 * typeck.c (build_reinterpret_cast_1,
157 build_const_cast_1): Implement -Wcast-align=strict.
158
159 2017-09-15 Jakub Jelinek <jakub@redhat.com>
160
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
191 need_cxx17_warning.
192 (write_exception_spec, start_mangling, mangle_decl): Likewise.
193 * Make-lang.in (check-c++1z): Rename to check-c++17, depend on
194 it.
195 (check-c++17): New goal. Use 17 instead of 1z.
196 (check-c++-all): Use 17 instead of 1z.
197
198 2017-09-14 Jakub Jelinek <jakub@redhat.com>
199
200 PR c++/81314
201 * cp-gimplify.c (omp_var_to_track): Look through references.
202 (omp_cxx_notice_variable): Likewise.
203
204 2017-09-13 Nathan Sidwell <nathan@acm.org>
205
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.
209
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.
238
239 2017-09-12 Paolo Carlini <paolo.carlini@oracle.com>
240
241 PR c++/70621
242 * decl.c (start_decl): Early return error_mark_node if duplicate_decls
243 returns it; avoid misleading error message.
244
245 2017-09-12 Nathan Sidwell <nathan@acm.org>
246
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
256 on complete type.
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.
266
267 * name-lookup.c (get_class_binding): Rename TYPE arg to KLASS for
268 consistency.
269 (restort_data): Move later.
270 (method_name_cmp, resort_method_name_cmp): Simplify.
271 (resort_type_method_vec): Reformat.
272
273 2017-09-09 Jason Merrill <jason@redhat.com>
274
275 * constexpr.c (reduced_constant_expression_p): If
276 CONSTRUCTOR_NO_IMPLICIT_ZERO, check that all fields are initialized.
277
278 2017-09-09 Eric Botcazou <ebotcazou@adacore.com>
279
280 PR bootstrap/81926
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.
284
285 2017-09-08 Jason Merrill <jason@redhat.com>
286
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.
291
292 2017-09-06 Jason Merrill <jason@redhat.com>
293
294 PR c++/82053 - ICE with default argument in lambda in template
295 * pt.c (tsubst_arg_types): Substitute default arguments for lambdas
296 in templates.
297 (retrieve_specialization): Use lambda_fn_in_template_p.
298 * cp-tree.h: Declare it.
299
300 PR c++/82070 - error with nested lambda capture
301 * pt.c (tsubst_expr) [DECL_EXPR]: Register capture proxies with
302 register_local_specialization.
303
304 2017-09-06 Nathan Sidwell <nathan@acm.org>
305
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
310 out of ...
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.
317
318 * class.c (warn_hidden): Don't barf on non-functions.
319 * decl2.c (check_classfn): Likewise. Check template match earlier.
320
321 * name-lookup.c (count_fields): Rename to ...
322 (count_class_fields): ... here. Take a class, don't count
323 NULL-named fields.
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.
332
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.
357
358 2017-09-05 Nathan Sidwell <nathan@acm.org>
359
360 * name-lookup.c (do_class_using_decl): Elide read-once temps.
361 Move declarations to initializations.
362
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
368 realistic type.
369 (grok_special_member_properties): Set
370 TYPE_HAS_CONVERSION. Expicitly look at DECL_NAME for specialness.
371 Improve TYPE_HAS_CONSTEXPR_CTOR setting.
372
373 * cp-tree.h (lang_decl_base): Rename template_conv_p to
374 unknown_bound_p.
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
380 setting.
381
382 * class.c (unreverse_member_declarations): Remove extraneous if.
383 * pt.c (push_template_decl_real): Use string concatenation, not
384 \<newline>. Add %<..%>.
385
386 2017-09-05 Paolo Carlini <paolo.carlini@oracle.com>
387
388 PR c++/81942
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.
395
396 2017-09-01 Nathan Sidwell <nathan@acm.org>
397
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.
408
409 * class.c (finish_struct): Call set_class_bindings for the
410 template case too.
411
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
422 here.
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.
426
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.
437
438 2017-09-01 Jakub Jelinek <jakub@redhat.com>
439
440 PR c/81887
441 * parser.c (cp_parser_omp_ordered): Handle -fopenmp-simd.
442
443 2017-09-01 Marek Polacek <polacek@redhat.com>
444
445 PR c++/82040
446 * typeck.c (cp_build_unary_op): Avoid re-entering reporting routines.
447
448 2017-08-30 Jason Merrill <jason@redhat.com>
449
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.
455
456 PR c++/82030 - ICE inheriting from multiple lambdas
457 PR c++/80767
458 * call.c (compare_ics): Handle null candidate.
459
460 2017-08-30 Ville Voutilainen <ville.voutilainen@gmail.com>
461
462 Make taking the address of an overloaded function a non-deduced context
463
464 * pt.c (unify_overload_resolution_failure): Remove.
465 (unify_one_argument): Adjust.
466
467 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
468 Alan Hayward <alan.hayward@arm.com>
469 David Sherwood <david.sherwood@arm.com>
470
471 * typeck.c (cp_build_binary_op): Use SCALAR_TYPE_MODE.
472
473 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
474 Alan Hayward <alan.hayward@arm.com>
475 David Sherwood <david.sherwood@arm.com>
476
477 * cvt.c (cp_convert_to_pointer): Use SCALAR_INT_TYPE_MODE.
478
479 2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
480 Alan Hayward <alan.hayward@arm.com>
481 David Sherwood <david.sherwood@arm.com>
482
483 * mangle.c (write_real_cst): Use SCALAR_FLOAT_TYPE_MODE
484 instead of TYPE_MODE.
485
486 2017-08-29 Jason Merrill <jason@redhat.com>
487
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
500 capture failure.
501 * call.c (build_new_method_call_1): Print the right constructor
502 name.
503
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
513 templates.
514 (find_parameter_packs_r): Ignore capture proxies. Look into
515 lambdas.
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
521 proxies.
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.
531
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
540 return type.
541
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.
548
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
551 pack as well.
552 (tsubst_decl) [FUNCTION_DECL]: Set DECL_CONTEXT on the parameters.
553 (tsubst) [TEMPLATE_PARM_INDEX]: Check for error_mark_node.
554
555 PR c++/80767 - unnecessary instantiation of generic lambda
556 * call.c (convert_like_real): Call build_user_type_conversion_1 if
557 cand is null.
558 (add_conv_candidate): Build a ck_user conversion with no candidate.
559
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.
566
567 * pt.c (build_deduction_guide): Set DECL_ABSTRACT_ORIGIN on the
568 template, not the function.
569 (template_guide_p): Adjust.
570
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
575 lss_copy.
576
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".
584
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
588 current_class_ptr.
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.
594
595 Fix default argument conversion failure and SFINAE.
596 * call.c (build_over_call): Check convert_default_arg result for
597 error_mark_node.
598 * parser.c (cp_parser_late_parsing_default_args): Remember
599 error_mark_node.
600
601 2017-08-28 Nathan Sidwell <nathan@acm.org>
602
603 * cp-tree.h (lang_type): Replace sorted_fields vector with
604 bindings map.
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.
617
618 * cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields):
619 Delete.
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.
632
633 2017-08-25 Nathan Sidwell <nathan@acm.org>
634
635 * class.c (method_name_cmp, resort_method_name_cmp): Methods
636 can never be NULL.
637
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
643 conv_op_identifier.
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.
656
657 2017-08-24 Nathan Sidwell <nathan@acm.org>
658
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
664 distinction.
665 (lookup_conversions): Likewise.
666
667 2017-08-23 Nathan Sidwell <nathan@acm.org>
668
669 * cp-tree.h (lookup_field_1, lookup_fnfields_slot,
670 lookup_fnfields_slot_nolazy, lookup_all_conversions): Move
671 declatations to ...
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.
680
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.
684
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.
690
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.
701
702 2017-08-21 Nathan Sidwell <nathan@acm.org>
703
704 * search.c (lookup_field_r): Remove obsolete code for type-named
705 field in PoD.
706
707 * search.c (lookup_field_1): Assert TYPE is a class and VFIELD
708 isn't special.
709 (lookup_field_fuzzy_info::fuzzy_lookup_fnfields): Delete.
710 (lookup_field_fuzzy_r): Adjust.
711
712 2017-08-21 David Malcolm <dmalcolm@redhat.com>
713
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.
717
718 2017-08-21 Nathan Sidwell <nathan@acm.org>
719
720 PR c++/81899
721 * pt.c (instantiate_class_template_1):
722 BOUND_TEMPLATE_TEMPLATE_PARM is never friend-injected.
723
724 2017-08-18 David Malcolm <dmalcolm@redhat.com>
725
726 PR c++/81514
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.
732
733 2017-08-18 H.J. Lu <hongjiu.lu@intel.com>
734
735 PR c/53037
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.
739
740 2017-08-17 Nathan Sidwell <nathan@acm.org>
741
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.
746
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
751 TYPE_LANG_SPECIFIC.
752
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.
756
757 2017-08-14 Martin Sebor <msebor@redhat.com>
758
759 PR c/81117
760 * error.c (cp_printer): Handle 'G'.
761
762 2017-08-11 Martin Liska <mliska@suse.cz>
763
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
768 both arguments.
769 * optimize.c (can_alias_cdtor): Likewise.
770
771 2017-08-11 Jason Merrill <jason@redhat.com>
772
773 PR c++/81671 - nullptr_t template parameter
774 * pt.c (convert_nontype_argument): Fix nullptr_t check.
775
776 2017-08-10 Jason Merrill <jason@redhat.com>
777
778 PR c++/81359 - Unparsed NSDMI error from SFINAE context.
779 * method.c (synthesized_method_walk): Don't diagnose lack of
780 operator delete.
781
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.
790
791 2017-08-10 David Malcolm <dmalcolm@redhat.com>
792
793 * parser.c (cp_parser_error): Update for new param to
794 c_parse_error.
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
804 parenthesis.
805 (cp_parser_primary_expression): Likewise.
806 (cp_parser_compound_literal_p): Remove consumption of opening
807 paren.
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
824 matching_braces.
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
836 matching_parens.
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
860 as above.
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.
901
902 2017-08-09 Jason Merrill <jason@redhat.com>
903
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.
907
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.
922
923 2017-08-09 Marek Polacek <polacek@redhat.com>
924
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.
928
929 2017-08-08 Marek Polacek <polacek@redhat.com>
930
931 PR c++/81607
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
934 they differ.
935
936 2017-08-08 Martin Liska <mliska@suse.cz>
937
938 * call.c: Include header files.
939 * cp-gimplify.c: Likewise.
940 * cp-ubsan.c: Likewise.
941 * cvt.c: Likewise.
942 * init.c: Likewise.
943 * search.c: Likewise.
944 * semantics.c: Likewise.
945 * typeck.c: Likewise.
946
947 2017-08-07 Martin Liska <mliska@suse.cz>
948
949 * parser.c (cp_parser_gnu_attribute_list): Canonicalize name of an
950 attribute.
951 (cp_parser_std_attribute): Likewise.
952 * tree.c: Add new include.
953
954 2017-08-04 Paolo Carlini <paolo.carlini@oracle.com>
955
956 PR c++/79790
957 * pt.c (do_class_deduction): Handle the case of no viable implicit
958 deduction guides; simplify the code generating implicit deduction
959 guides.
960
961 2017-08-03 Paolo Carlini <paolo.carlini@oracle.com>
962
963 PR c++/71440
964 * typeck.c (build_x_unary_op): Avoid pretty-printing constructor /
965 destructor as expressions.
966
967 2017-08-02 Jakub Jelinek <jakub@redhat.com>
968
969 PR c++/81640
970 * call.c (build_user_type_conversion_1): Only call
971 lookup_fnfields_slot if totype is CLASS_TYPE_P.
972
973 2017-07-31 Jason Merrill <jason@redhat.com>
974
975 * decl.c (declare_global_var): Set DECL_CONTEXT.
976
977 2017-07-31 Jan Hubicka <hubicka@ucw.cz>
978 Martin Liska <mliska@suse.cz>
979
980 * pt.c (tsubst_copy): Copy PREDICT_EXPR.
981 * semantics.c (finish_goto_stmt): Build gimple predict
982 stament.
983 * constexpr.c (potential_constant_expression_1): Handle
984 PREDICT_EXPR.
985
986 2017-07-31 Martin Liska <mliska@suse.cz>
987
988 PR sanitize/81530
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.
995
996 2017-07-29 Jakub Jelinek <jakub@redhat.com>
997
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.
1008
1009 2017-07-28 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
1010
1011 * lex.c (copy_decl): Adjust.
1012 (copy_type): Likewise.
1013
1014 2017-07-26 Paolo Carlini <paolo.carlini@oracle.com>
1015
1016 PR c++/71570
1017 * lambda.c (add_capture): Early return if we cannot capture by
1018 reference.
1019
1020 2017-07-26 Jason Merrill <jason@redhat.com>
1021
1022 P0702R1 - List deduction of vector.
1023 * pt.c (do_class_deduction): Special-case deduction from a single
1024 element of related type.
1025
1026 2017-07-26 Leonid Koppel <lkoppel@uwaterloo.ca>
1027
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.
1031
1032 2017-07-21 Nathan Sidwell <nathan@acm.org>
1033
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.
1039
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.
1049
1050 * call.c (add_candidates): Move decls to initialization. Don't
1051 use !!.
1052
1053 2017-07-20 Nathan Sidwell <nathan@acm.org>
1054
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.
1074
1075 2017-07-19 Nathan Sidwell <nathan@acm.org>
1076
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):
1083 Replace with ...
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.
1087
1088 * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS,
1089 PACK_EXPANSION_EXTRA_ARGS): Use TYPE_{MIN,MAX}_VALUE_RAW.
1090
1091 2017-07-18 Nathan Sidwell <nathan@acm.org>
1092
1093 * cp-array-notation.c (build_array_notation_ref): Use
1094 TYPE_{MIN,MAX}_VALUE.
1095
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.
1101
1102 2017-07-17 Volker Reichelt <v.reichelt@netcologne.de>
1103
1104 * parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for
1105 friend outside class and obsolete auto as storage-class-specifier.
1106
1107 2017-07-17 Nathan Sidwell <nathan@acm.org>
1108
1109 * class.c (maybe_warn_about_overly_private_class): Ignore public
1110 copy ctors.
1111
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.
1121
1122 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Clarify
1123 semantics, simplify implementation.
1124
1125 2017-07-16 Volker Reichelt <v.reichelt@netcologne.de>
1126
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.
1132
1133 2017-07-14 David Malcolm <dmalcolm@redhat.com>
1134
1135 * name-lookup.c (get_std_name_hint): Add '<' and '>' around
1136 the header names.
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>.
1145
1146 2017-07-12 Jason Merrill <jason@redhat.com>
1147
1148 P0512R0 - Deduction from an initializer list.
1149 * pt.c (do_class_deduction): Do list deduction in two phases.
1150
1151 2017-07-12 Nathan Sidwell <nathan@acm.org>
1152
1153 * cp-tree.h (DECL_CONSTRUCTOR_P, DECL_MAYBE_IN_CHARGE_CONSTRUCTOR,
1154 DECL_DESTRUCTOR_P, DECL_MAYBE_IN_CHARGE_DESTRCTOR): Look at
1155 identifier flags.
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.
1162
1163 2017-07-11 Jason Merrill <jason@redhat.com>
1164
1165 Core DR 393
1166 * decl.c (grokparms): Downgrade error about array of unknown bound
1167 to pedwarn and disable it for C++17.
1168
1169 2017-07-11 Nathan Sidwell <nathan@acm.org>
1170
1171 * decl2.c (reset_type_linkage_2): Dont't change ctor name.
1172
1173 2017-07-10 Martin Sebor <msebor@redhat.com>
1174
1175 * cp-tree.h (cp_operator_id, cp_assignment_operator_id): Document.
1176
1177 2017-07-06 Jason Merrill <jason@redhat.com>
1178
1179 PR c++/81204 - parse error with dependent template-name
1180 * parser.c (cp_parser_lookup_name): Revert previous change.
1181
1182 2017-07-06 David Malcolm <dmalcolm@redhat.com>
1183
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.
1188
1189 2017-07-04 Jakub Jelinek <jakub@redhat.com>
1190
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.
1195
1196 PR c++/81258
1197 * parser.c (cp_parser_decomposition_declaration): Diagnose invalid
1198 forms of structured binding initializers.
1199
1200 2017-07-03 Paolo Carlini <paolo.carlini@oracle.com>
1201
1202 PR c++/65775
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.
1206
1207 2017-07-03 David Malcolm <dmalcolm@redhat.com>
1208
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.
1213
1214 2017-06-30 Jason Merrill <jason@redhat.com>
1215
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.
1219
1220 2017-06-30 Nathan Sidwell <nathan@acm.org>
1221
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):
1233 ... here. Rename.
1234
1235 2017-06-30 David Malcolm <dmalcolm@redhat.com>
1236
1237 PR c++/80014
1238 * parser.c (cp_parser_postfix_expression): Construct a location
1239 for typeid expressions.
1240
1241 2017-06-30 Nathan Sidwell <nathan@acm.org>
1242
1243 * cp-tree.h (lookup_fnfields_1, class_method_index_for_fn): Don't
1244 declare.
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
1249 diagnostics.
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.
1258
1259 * call.c (build_new_method_call_1): Use constructo_name to get
1260 ctor name. Move argument processing earlier to merge cdtor
1261 handling blocks.
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
1265 special.
1266 * search.c (class_method_index_for_fn): Likewise.
1267
1268 PR c++/81229
1269 * name-lookup.c (do_pushdecl): Reset IDENTIFIER_TYPE when finding
1270 a matching TYPE_DECL.
1271
1272 2017-06-29 Paolo Carlini <paolo.carlini@oracle.com>
1273
1274 * class.c (add_method): Change pair of errors to error + inform.
1275 (handle_using_decl): Likewise.
1276
1277 2017-06-29 Jason Merrill <jason@redhat.com>
1278
1279 * constexpr.c, error.c, tree.c: Remove WITH_CLEANUP_EXPR handling.
1280
1281 PR c++/81180 - ICE with C++17 deduction of member class template.
1282 * pt.c (build_deduction_guide): Correct member template handling.
1283
1284 PR c++/81188 - matching decltype of member function call.
1285 * tree.c (cp_tree_equal): Remove COMPONENT_REF special case.
1286
1287 2017-06-29 Nathan Sidwell <nathan@acm.org>
1288
1289 PR c++/81247
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
1293 namespace.
1294
1295 2017-06-29 Jason Merrill <jason@redhat.com>
1296
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.
1300
1301 2017-06-29 Nathan Sidwell <nathan@acm.org>
1302
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,
1308
1309 * lex.c (maybe_add_lang_type_raw): Exit early, rather than use a
1310 flag.
1311
1312 * call.c (check_dtor_name): Use constructor_name for enums too.
1313 (build_new_method_call_1): Use constructor_name for cdtors and
1314 show ~ for dtor.
1315 * class.c (build_self_reference): Use TYPE_NAME to get name of
1316 self reference.
1317 * name-lookup (constructor_name): Use DECL_NAME directly.
1318 (constructor_name_p): Reimplement.
1319 (push_class_level_binding_1): Use TYPE_NAME directly.
1320
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.
1329
1330 * parser.c (cp_parser_direct_declarator): Reorder if to avoid
1331 indentation. Remove unnecessary assignment of constructor name.
1332
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.
1346
1347 2017-06-28 Jason Merrill <jason@redhat.com>
1348
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.
1352
1353 PR c++/69300 - ICE with self-referential noexcept
1354 * pt.c (maybe_instantiate_noexcept): Check for recursion.
1355
1356 PR c++/61022 - error with variadic template template parm
1357 * pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION.
1358
1359 PR c++/72801 - ICE with variadic partial specialization
1360 * pt.c (unify_pack_expansion): Use PACK_EXPANSION_EXTRA_ARGS.
1361
1362 PR c++/55639 - partial specialization with ::template
1363 * parser.c (cp_parser_class_head): Handle ::template.
1364
1365 PR c++/45976 - error with ::template in declarator.
1366 * pt.c (resolve_typename_type): Fix TEMPLATE_ID_EXPR handling.
1367
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
1371 parameter.
1372 (cp_parser_id_expression): Pass it.
1373 (cp_parser_diagnose_invalid_type_name): Handle TEMPLATE_ID_EXPR.
1374
1375 * parser.c (cp_parser_template_id): Use the range location on the
1376 TEMPLATE_ID_EXPR.
1377
1378 PR c++/81204 - parse error with dependent template-name
1379 * parser.c (cp_parser_lookup_name): Disqualify function templates
1380 after lookup.
1381
1382 2017-06-27 Nathan Sidwell <nathan@acm.org>
1383
1384 * pt.c (tsubst_decl <FUNCTION_DECL>): Move var decls to
1385 initialization point. Don't unnecessarily check for ctor name.
1386
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.
1402
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.
1411
1412 2017-06-27 Marek Polacek <polacek@redhat.com>
1413
1414 PR bootstrap/81216
1415 * parser.c (cp_parser_already_scoped_statement): Initialize
1416 LOC_AFTER_LABELS.
1417
1418 2017-06-26 Jason Merrill <jason@redhat.com>
1419
1420 PR c++/81215 - deduction failure with variadic TTP.
1421 * pt.c (unify_bound_ttp_args): Restore old logic for C++14 and down.
1422
1423 2017-06-26 Martin Sebor <msebor@redhat.com>
1424
1425 PR c++/81169
1426 * call.c (maybe_warn_class_memaccess): Preserve explicit conversions
1427 to detect casting away cv-qualifiers.
1428
1429 2017-06-26 Nathan Sidwell <nathan@acm.org>
1430
1431 * cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
1432 (DECL_COMPLETE_CONSTRUCTOR_P): Directly compare
1433 identifier.
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,
1442 IDENTIFIER_DTOR_P.
1443 * call.c (in_charge_arg_for_name): Reimplement.
1444 (build_special_member_call): Use IDENTIFIER_CDTOR_P,
1445 IDENTIFIER_DTOR_P.
1446
1447 2017-06-26 Marek Polacek <polacek@redhat.com>
1448
1449 PR c/80116
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.
1456
1457 2017-06-24 Paolo Carlini <paolo.carlini@oracle.com>
1458
1459 PR c++/62315
1460 * parser.c (cp_parser_diagnose_invalid_type_name): Don't print
1461 'typename' in error messages about missing 'typename'.
1462
1463 2017-06-23 Jason Merrill <jason@redhat.com>
1464
1465 PR c++/79056 - C++17 ICE with invalid template syntax.
1466 * parser.c (cp_parser_simple_type_specifier): Don't assume that type
1467 is a TYPE_DECL.
1468 (cp_parser_check_for_invalid_template_id): Handle TYPE_DECL.
1469 * pt.c (template_placeholder_p): New.
1470 * cp-tree.h: Declare it.
1471
1472 2017-06-23 Marc Glisse <marc.glisse@inria.fr>
1473
1474 * decl.c (duplicate_decls): Use builtin_structptr_types.
1475
1476 2017-06-22 Nathan Sidwell <nathan@acm.org>
1477
1478 Reorder IDENTIFIER flags
1479 gcc/cp/
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
1510 space. Adjust.
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.
1531
1532 2017-06-21 Jakub Jelinek <jakub@redhat.com>
1533
1534 PR c++/81154
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.
1538
1539 2017-06-21 David Malcolm <dmalcolm@redhat.com>
1540
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.
1546
1547 2017-06-20 Jason Merrill <jason@redhat.com>
1548
1549 PR c++/80972 - C++17 ICE with attribute packed.
1550 * call.c (build_over_call): Allow a TARGET_EXPR from reference
1551 binding.
1552
1553 2017-06-20 Nathan Sidwell <nathan@acm.org>
1554
1555 * cp-tree.h (CPTI_NELTS_IDENTIFIER): Delete.
1556 (nelts_identifier): Delete.
1557 * decl.c (initialize_predefined_identifiers): Remove nelts.
1558
1559 PR c++/67074 - namespace aliases
1560 * decl.c (duplicate_decls): Don't error here on mismatched
1561 namespace alias.
1562 * name-lookup.c (name_lookup::add_value): Matching namespaces are
1563 not ambiguous.
1564 (diagnose_name_conflict): Namespaces are never redeclarations.
1565 (update_binding): An alias can match a real namespace.
1566
1567 2017-06-19 Jason Merrill <jason@redhat.com>
1568
1569 PR c++/80562 - ICE with constexpr if.
1570 * semantics.c (finish_if_stmt_cond): Call
1571 instantiate_non_dependent_expr.
1572
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.
1576
1577 2017-06-19 Nathan Sidwell <nathan@acm.org>
1578
1579 PR c++/81124
1580 PR c++/79766
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.
1584
1585 2017-06-19 Jason Merrill <jason@redhat.com>
1586
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.
1594
1595 2017-06-19 Nathan Sidwell <nathan@acm.org>
1596
1597 * pt.c (coerce_template_parms): Fix indentation.
1598 (tsubst_decl): Remove repeated SET_DECL_RTL. Move VAR_P handling
1599 in to single block.
1600
1601 PR c++/81119
1602 * name-lookup.c (update_binding): Only warn about constructors
1603 hidden by functions.
1604
1605 2017-06-17 Jason Merrill <jason@redhat.com>
1606
1607 PR c++/60063 - -Wunused-local-typedefs and templates.
1608 * decl2.c (is_late_template_attribute): Return false for "used".
1609
1610 PR c++/70844 - -Wuseless-cast and inheriting constructor.
1611 * method.c (forward_parm): Suppress warn_useless_cast.
1612
1613 2017-06-16 Jason Merrill <jason@redhat.com>
1614
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
1619 template.
1620
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.
1624
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.
1627
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.
1631
1632 PR c++/81074 - ICE with partial specialization of member template.
1633 PR c++/71747
1634 * pt.c (get_partial_spec_bindings): Only coerce innermost args.
1635
1636 PR c++/80831 - ICE with -fsyntax-only.
1637 * decl2.c (c_parse_final_cleanups): Use cgraph_node::get_create.
1638
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.
1643
1644 2017-06-16 Nathan Sidwell <nathan@acm.org>
1645
1646 * pt.c (tsubst_baselink): Fix & clarify formatting.
1647
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.
1660
1661 Symbol tables are insert only.
1662 * cp-tree.h (default_hash_traits <lang_identifier *>): Don't
1663 derive from pointer_hash. Make undeletable.
1664
1665 * class.c (resort_type_method_vec): Avoid potential unsigned
1666 overflow.
1667
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.
1676
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.
1686
1687 Make rtti lazier
1688 * rtti.c (enum tinfo_kind): Add TK_DERIVED_TYPES,
1689 TK_VMI_CLASS_TYPES, TK_MAX. Delete TK_FIXED.
1690 (tinfo_names): New.
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
1699 location.
1700
1701 2017-06-15 Martin Sebor <msebor@redhat.com>
1702
1703 PR c++/80560
1704 * call.c (first_non_public_field, maybe_warn_class_memaccess): New
1705 functions.
1706 (has_trivial_copy_assign_p, has_trivial_copy_p): Ditto.
1707 (build_cxx_call): Call maybe_warn_class_memaccess.
1708
1709 2017-06-14 Jakub Jelinek <jakub@redhat.com>
1710
1711 * cp-gimplify.c (cp_genericize_r): Turn most of the function
1712 into a switch (TREE_CODE (stmt)) statement from long else if
1713 sequence.
1714
1715 2017-06-13 Jakub Jelinek <jakub@redhat.com>
1716
1717 PR c++/80973
1718 * cp-gimplify.c (cp_genericize_r): Don't instrument MEM_REF second
1719 argument even if it has REFERENCE_TYPE.
1720
1721 PR c++/80984
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.
1725
1726 2017-06-13 Martin Liska <mliska@suse.cz>
1727
1728 PR sanitize/78204
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.
1741
1742 2017-06-11 Jason Merrill <jason@redhat.com>
1743
1744 * error.c (dump_expr): Use is_this_parameter.
1745
1746 * cp-tree.h, decl2.c, mangle.c, parser.c, pt.c, semantics.c: Use
1747 id_equal.
1748
1749 2017-06-09 Jason Merrill <jason@redhat.com>
1750
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.
1757
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.
1768
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.
1772
1773 * pt.c (convert_nontype_argument): Check NULLPTR_TYPE_P rather than
1774 nullptr_node.
1775
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.
1779
1780 PR c++/80384 - ICE with dependent noexcept-specifier
1781 * pt.c (dependent_type_p_r) [FUNCTION_TYPE]: Check for dependent
1782 noexcept-specifier.
1783
1784 * constexpr.c (potential_constant_expression_1): Allow 'this' capture.
1785
1786 2017-06-09 Jan Hubicka <hubicka@ucw.cz>
1787
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.
1791
1792 2017-06-08 Jakub Jelinek <jakub@redhat.com>
1793
1794 PR c/81006
1795 * semantics.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
1796 to sizetype before size_binop.
1797
1798 PR c++/81011
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.
1802
1803 2017-06-08 Jan Hubicka <hubicka@ucw.cz>
1804
1805 * cp-tree.h (lang_check_failed): Annotate by ATTRIBUTE_COLD.
1806
1807 2017-06-07 Nathan Sidwell <nathan@acm.org>
1808
1809 * class.c (layout_class_type): Restructure overlong-bitfield tpe
1810 search.
1811
1812 2017-06-07 Jonathan Wakely <jwakely@redhat.com>
1813
1814 PR c++/80990
1815 * pt.c (do_class_deduction): Build qualified type.
1816
1817 2017-06-06 Nathan Sidwell <nathan@acm.org>
1818
1819 * name-lookup.c (suggest_alternatives_for): Use qualified lookup
1820 sans using directives. Don't walk into inline namespaces.
1821
1822 PR c++/80979
1823 * name-lookup.c (adl_class_only): Don't add visible friends.
1824
1825 2017-06-05 Volker Reichelt <v.reichelt@netcologne.de>
1826
1827 * parser.c (cp_parser_base_specifier): Fix typos in error messages.
1828
1829 2017-06-02 Nathan Sidwell <nathan@acm.org>
1830
1831 Remove lang_type_ptrmem.
1832 * cp-tree.h (lang_type_header): Remove is_lang_type_class. Move
1833 into ...
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.
1844
1845 * class.c (check_bases_and_members): Adjust vec_new_uses_cookie
1846 setting.
1847
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
1851 list.
1852 (suggest_alternatives_for): Adjust for namespace list. Do
1853 breadth-first search.
1854 * decl2.c (collect_source_refs): Namespaces are on the regulr
1855 list.
1856 (collect_ada_namespace): Likewise.
1857
1858 2017-06-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
1859
1860 * typeck.c (cp_build_binary_op): Implement the -Wsizeof_pointer_div
1861 warning.
1862
1863 2017-06-01 Ville Voutilainen <ville.voutilainen@gmail.com>
1864
1865 PR c++/80812
1866 * method.c (constructible_expr): Strip array types before calling
1867 build_value_init.
1868
1869 2017-06-01 Paolo Carlini <paolo.carlini@oracle.com>
1870
1871 PR c++/80896
1872 * cvt.c (convert_to_void): Possibly call maybe_warn_nodiscard
1873 for case INDIRECT_REF too in the main switch.
1874
1875 2017-05-31 Jason Merrill <jason@redhat.com>
1876
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.
1880
1881 2017-05-31 Nathan Sidwell <nathan@acm.org>
1882
1883 * cp-tree.h (lang_decl_slector): New enum.
1884 (lang_decl_base): Make selector an enum. Drop decomposition_p
1885 field.
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
1896 retrofit_lang_decl.
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.
1903
1904 2017-05-30 Jason Merrill <jason@redhat.com>
1905
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.
1909
1910 2017-05-30 David Malcolm <dmalcolm@redhat.com>
1911
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.
1921 (joust): 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
1944 %H and %I.
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.
1951
1952 2017-05-30 Nathan Sidwell <nathan@acm.org>
1953
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.
1963
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
1972 value.
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.
1977 (pushtag): Adjust.
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.
1981
1982 PR c++/80913
1983 * name-lookup.c (add_decl_to_level): Assert not making a circular
1984 chain.
1985 (update_binding): Don't prematurely slide artificial decl.
1986
1987 2017-05-29 Alexandre Oliva <aoliva@redhat.com>
1988
1989 * cp-tree.h (lang_identifier): Drop oracle_looked_up, unused.
1990
1991 2017-05-29 Nathan Sidwell <nathan@acm.org>
1992
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
1997 with deduping.
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.
2005
2006 PR c++/80891 (#4)
2007 * ptree.c (cxx_print_xnode): Show internal OVERLOAD structure.
2008 * tree.c (ovl_insert, ovl_iterator_remove_node): Fix copying assert.
2009
2010 Stat hack representation
2011 * name-lookup.c (STAT_HACK_P, STAT_TYPE, STAT_DECL,
2012 MAYBE_STAT_DECL, MAYBE_STAT_TYPE): New.
2013 (stat_hack): 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.
2032
2033 PR c++/80891 (#1)
2034 * pt.c (most_specialized_instantiation): Cope with duplicate
2035 instantiations.
2036
2037 PR c++/80891 (#3)
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.
2048
2049 PR c++/80891 (#2)
2050 * tree.c (ovl_copy): Adjust assert, copy OVL_LOOKUP.
2051 (ovl_used): New.
2052 (lookup_keep): Call it.
2053
2054 2017-05-26 Nathan Sidwell <nathan@acm.org>
2055
2056 Implement DR2061
2057 * name-lookup.c (push_inline_namespaces): New.
2058 (push_namespace): Look inside inline namespaces.
2059
2060 Inline and using namespace representation change.
2061 * cp-tree.h (struct lang_decl_ns): Delete ns_using. Add usings,
2062 inlinees as vector.
2063 (DECL_NAMESPACE_USING): Adjust.
2064 (DECL_NAMESPACE_INLINEES): New.
2065 * name-lookup.h (struct cp_binding_level): Change usings
2066 representation.
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.
2074
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
2080 declare early.
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.
2087
2088 * cp-tree.h (OVL_CHAIN): Check looking at OVERLOAD.
2089 (ovl_iterator): Add allow_inner field. Adjust ctor. Make
2090 unduplicatable.
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
2097 and mark lookup.
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.
2101 (pushdecl): Adjust.
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.
2105
2106 * name-lookup.c (name_lookup::search_adl): ADL OMP UDR type args.
2107
2108 2017-05-26 Jakub Jelinek <jakub@redhat.com>
2109
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
2131 is expected.
2132 * expr.c (mark_exp_read): Recurse on DECL_DECOMP_BASE instead of
2133 DECL_VALUE_EXPR.
2134
2135 2017-05-25 Jason Merrill <jason@redhat.com>
2136
2137 PR c++/80605 - __is_standard_layout and zero-length array
2138 * class.c (check_bases): Use DECL_FIELD_IS_BASE.
2139
2140 2017-05-25 Nathan Sidwell <nathan@acm.org>
2141
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.
2148
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.
2166
2167 2017-05-25 Volker Reichelt <v.reichelt@netcologne.de>
2168
2169 * semantics.c (finish_handler_parms): Warn about non-reference type
2170 catch handlers.
2171
2172 2017-05-25 Nathan Sidwell <nathan@acm.org>
2173
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.
2184
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.
2197
2198 Reimplement ADL.
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.
2216
2217 2017-05-24 Nathan Sidwell <nathan@acm.org>
2218
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.
2224
2225 * Make-lang.in (CXX_AND_OBJCXX_OBJS): Alphabetize.
2226
2227 * cp-tree.h (cp_free_lang_data): Add extern.
2228 (ovl_skip_hidden, is_overloaded_fn, really_overloaded_fn): Add
2229 ATTRIBUTE_PURE.
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.
2236
2237 2017-05-24 Jonathan Wakely <jwakely@redhat.com>
2238
2239 PR c++/80544
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.
2247
2248 2017-05-24 Martin Sebor <msebor@redhat.com>
2249
2250 PR c/80731
2251 * call.c (fully_fold_internal): Adjust.
2252
2253 2017-05-24 Nathan Sidwell <nathan@acm.org>
2254
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.
2263
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.
2277
2278 2017-05-23 Jason Merrill <jason@redhat.com>
2279
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.
2285
2286 2017-05-23 Nathan Sidwell <nathan@acm.org>
2287
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.
2293 (pushdecl): Adjust.
2294 (push_overloaded_decl_1, push_overloaded_decl): Delete.
2295
2296 2017-05-23 Jason Merrill <jason@redhat.com>
2297
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.
2307
2308 2017-05-23 Nathan Sidwell <nathan@acm.org>
2309
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.
2320
2321 PR c++/80866
2322 * parser.c (cp_parser_template_id): Keep the lookup when stashing
2323 the template_id.
2324
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.
2329
2330 2017-05-23 Thomas Schwinge <thomas@codesourcery.com>
2331
2332 * parser.c (OACC_KERNELS_CLAUSE_MASK): Add
2333 "PRAGMA_OACC_CLAUSE_NUM_GANGS", "PRAGMA_OACC_CLAUSE_NUM_WORKERS",
2334 "VECTOR_LENGTH".
2335
2336 2017-05-23 Nathan Sidwell <nathan@acm.org>
2337
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
2351 IS_USING.
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.
2357 Adjust.
2358 (lookup_type_current_level): Delete.
2359 * parser.c (cp_parser_using_declaration): Adjust.
2360 * pt.c (tsubst_expr): Adjust.
2361
2362 2017-05-22 Nathan Sidwell <nathan@acm.org>
2363
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
2369 indirect arg.
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.
2378
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.
2383
2384 * config-lang.in (gtfiles): Sort list, break lines.
2385
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.
2405
2406 * name-lookup.c (pushdecl_top_level,
2407 pushdecl_top_level_and_finish): Move after namespace pushing and
2408 popping functions.
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.
2417
2418 2017-05-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
2419
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,
2423 add GTY attribute.
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.
2428
2429 2017-05-19 Nathan Sidwell <nathan@acm.org>
2430
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
2438 printing.
2439 * method.c (lazily_declare_fn): Assert we added it.
2440 * parser.c (cp_parser_nested_name_specifier): Use OVL_SINGLE_P,
2441 OVL_FIRST.
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.
2447
2448 2017-05-19 Thomas Schwinge <thomas@codesourcery.com>
2449
2450 * parser.c (cp_parser_omp_clause_default): Handle
2451 "OMP_CLAUSE_DEFAULT_PRESENT".
2452
2453 * parser.c (cp_parser_omp_clause_default): Avoid printing more
2454 than one syntax error message.
2455
2456 2017-05-19 Nathan Sidwell <nathan@acm.org>
2457
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.
2464
2465 2017-05-18 Nathan Sidwell <nathan@acm.org>
2466
2467 * cp-tree.h (OVL_ARG_DEPENDENT): Delete.
2468 (OVL_USED_P): New.
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
2473 lookup_keep.
2474 * tree.c (ovl_copy): New.
2475 (ovl_insert, ovl_iterator::remove_node): Copy immutable nodes.
2476 (lookup_keep): New.
2477
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.
2485
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.
2495
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.
2504
2505 2017-05-17 Nathan Sidwell <nathan@acm.org>
2506
2507 * cp-tree.h (default_hash_traits <lang_identifier *>): New
2508 specialization.
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.
2514
2515 2017-05-17 Ville Voutilainen <ville.voutilainen@gmail.com>
2516
2517 PR c++/80654
2518 PR c++/80682
2519 Implement new C++ intrinsics __is_assignable and __is_constructible.
2520 * cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New.
2521 (is_xible): 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.
2527 (is_xible): New.
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.
2533
2534 2017-05-17 Nathan Sidwell <nathan@acm.org>
2535
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.
2544
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,
2553 flatten nested if.
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.
2563
2564 2017-05-17 Martin Liska <mliska@suse.cz>
2565
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.
2571
2572 2017-05-16 David Malcolm <dmalcolm@redhat.com>
2573
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
2578 NULL.
2579 (lookup_member): Likewise.
2580 (locate_field_accessor): New function decl.
2581 (perform_or_defer_access_check): Add access_failure_info * param,
2582 defaulting to NULL.
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
2595 enforce_access.
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.
2601
2602 2017-05-16 Marek Polacek <polacek@redhat.com>
2603
2604 PR sanitizer/80536
2605 PR sanitizer/80386
2606 * cp-gimplify.c (cp_fold): Handle SAVE_EXPR.
2607
2608 2017-05-16 Nathan Sidwell <nathan@acm.org>
2609
2610 * name-lookup.c (check_local_shadow): New, broke out of ...
2611 (pushdecl_maybe_friend_1): ... here. Call it.
2612
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
2620 elided.
2621
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 &
2627 lkp_iterator.
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.
2650
2651 * typeck2.c (cxx_incomplete_type_diagnostic): Revert change and
2652 check is_overloaded_fn.
2653
2654 2017-05-16 Martin Liska <mliska@suse.cz>
2655
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.
2659
2660 2017-05-16 Nathan Sidwell <nathan@acm.org>
2661
2662 * cp-tree.h (class ovl_iterator, class lkp_iterator): New OVERLOAD
2663 iterators.
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.
2682
2683 * cp-tree.h (OVL_FIRST, OVL_NAME): New.
2684 (ovl_first): 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.
2705
2706 * pt.c (tsubst_copy_and_build): Remove unnecessary COMPONENT_REF
2707 peeking.
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.
2715
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.
2724
2725 2017-05-15 Nathan Sidwell <nathan@acm.org>
2726
2727 PR c++/79369
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.
2734
2735 2017-05-11 Nathan Sidwell <nathan@acm.org>
2736
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.
2742
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.
2754
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.
2761
2762 * name-lookup.c (pushdecl_outermost_localscope): Always
2763 conditionally stop timer.
2764
2765 * decl.c (xref_tag_1): Don't frob ts_lambda scope here.
2766 * name-lookup.c (pushtag_1): Deal with ts_lambda scope.
2767
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.
2783
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
2792 logic.
2793 (store_parm_decls): Adjust get_local_decls call.
2794 (parser.c (synthesize_implicit_template_parm): Likewise.
2795
2796 2017-05-11 Ville Voutilainen <ville.voutilainen@gmail.com>
2797
2798 PR c++/80682
2799 * method.c (is_trivially_xible): Reject void types.
2800
2801 2017-05-10 Nathan Sidwell <nathan@acm.org>
2802
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.
2806
2807 * pt.c (print_candidates_1): Separate TREE_LIST and OVERLOAD
2808 printing.
2809 (print_candidates): Adjust.
2810
2811 * cp-tree.h (build_new_function_call): Lose koenig_p arg. Fix
2812 line breaking.
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.
2819
2820 2017-05-10 Jason Merrill <jason@redhat.com>
2821
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.
2832
2833 CWG 1847 - Clarifying compatibility during partial ordering
2834 * pt.c (more_specialized_fn): No order between two non-deducible
2835 parameters.
2836
2837 * pt.c (dependent_type_p): Make sure we aren't called with
2838 global_type_node.
2839
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.
2847
2848 2017-05-10 Nathan Sidwell <nathan@acm.org>
2849
2850 * cp-tree.h (add_method, clone_function_decl): Change last arg to
2851 bool.
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.
2860
2861 2017-05-10 Paolo Carlini <paolo.carlini@oracle.com>
2862
2863 PR c++/80145
2864 * decl.c (finish_function): To improve error recovery, change the
2865 logic for calling apply_deduced_return_type.
2866
2867 2017-05-09 Jason Merrill <jason@redhat.com>
2868
2869 PR c++/80605 - __is_standard_layout and empty base
2870 * class.c (check_bases): Ignore empty bases.
2871
2872 PR c++/70979 - literal class and closure types
2873 * class.c (finalize_literal_type_property): Handle closures
2874 specifically.
2875 (explain_non_literal_class): Likewise.
2876
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.
2881
2882 2017-05-09 Paolo Carlini <paolo.carlini@oracle.com>
2883
2884 PR c++/80186
2885 * pt.c (tsubst_decl): Early return error_mark_node if
2886 grok_ctor_properties returns false.
2887
2888 2017-05-09 Jason Merrill <jason@redhat.com>
2889
2890 PR c++/70167 - array prvalue treated as lvalue
2891 * cp-tree.h (CONSTRUCTOR_C99_COMPOUND_LITERAL): New.
2892 (enum fcl_t): 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.
2899
2900 2017-05-09 Nathan Sidwell <nathan@acm.org>
2901
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.
2905
2906 2017-05-08 Jason Merrill <jason@redhat.com>
2907
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.
2915
2916 2017-05-08 Nathan Sidwell <nathan@acm.org>
2917
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.
2921
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.
2929
2930 * class.c (build_vtbl_initializer): Don't shadow outer variable
2931 with static var.
2932
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.
2945
2946 2017-05-07 Volker Reichelt <v.reichelt@netcologne.de>
2947
2948 PR translation/80280
2949 * call.c (print_z_candidate): Fix quoting.
2950
2951 2017-05-05 David Malcolm <dmalcolm@redhat.com>
2952
2953 * error.c (pedwarn_cxx98): Replace report_diagnostic
2954 with diagnostic_report_diagnostic.
2955
2956 2017-05-05 Nathan Sidwell <nathan@acm.org>
2957
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
2962 with ...
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.
2982
2983 * call.c (make_temporary_var_for_ref_to_temp): Push decl into
2984 current scope.
2985 * lex.c (unqualified_name_lookup_error): Likewise.
2986
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.
2990
2991 Kill walk_namespaces.
2992 * cp-tree.h (walk_namespaces_fn, walk_namespaces): Delete.
2993 * decl.c (walk_namespaces_r, walk_namespaces): Delete.
2994
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.
3009
3010 2017-05-05 Paolo Carlini <paolo.carlini@oracle.com>
3011
3012 PR c++/71577
3013 * decl.c (reshape_init): Unconditionally return error_mark_node
3014 upon error about too many initializers.
3015
3016 2017-05-04 Nathan Sidwell <nathan@acm.org>
3017
3018 * constraint.cc (diagnose_check_constraint): Fix %E thinko.
3019
3020 2017-05-04 Martin Sebor <msebor@redhat.com>
3021
3022 PR translation/80280
3023 * call.c (print_z_candidate): Add missing quoting to %D and other
3024 like directives.
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.
3039
3040 2017-05-04 Nathan Sidwell <nathan@acm.org>
3041
3042 More global trees.
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.
3058
3059 * name-lookup.c: Reorder functions to make merging from modules
3060 branch simpler.
3061
3062 2017-05-03 Jason Merrill <jason@redhat.com>
3063
3064 * constexpr.c (cxx_eval_outermost_constant_expr): Use TV_CONSTEXPR.
3065
3066 2017-05-03 Nathan Sidwell <nathan@acm.org>
3067
3068 * cp-tree.h (enum cp_tree_index, cp_global_trees): Move earlier,
3069 along with #defines, to before name-lookup include.
3070
3071 2017-05-02 Paolo Carlini <paolo.carlini@oracle.com>
3072
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.
3078
3079 2017-05-01 Xi Ruoyao <ryxi@stu.xidian.edu.cn>
3080
3081 PR c++/80038
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.
3088
3089 2017-04-29 Volker Reichelt <v.reichelt@netcologne.de>
3090
3091 * parser.c (cp_parser_member_declaration): Add fix-it hints for
3092 stray comma and missing semicolon at end of member declaration.
3093
3094 2017-04-27 Volker Reichelt <v.reichelt@netcologne.de>
3095
3096 * parser.c (cp_parser_cast_expression): Add target type of cast to
3097 diagnostic.
3098 * error.c (type_to_string): Add '{enum}' suffix to enumeration types.
3099
3100 2017-04-26 Paolo Carlini <paolo.carlini@oracle.com>
3101
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.
3105
3106 2017-04-26 Volker Reichelt <v.reichelt@netcologne.de>
3107
3108 * parser.c (cp_parser_nested_name_specifier_opt): Add fix-it
3109 information to diagnostic of invalid colon in nested-name-specifier.
3110
3111 2017-04-25 Volker Reichelt <v.reichelt@netcologne.de>
3112
3113 * parser.c (cp_parser_elaborated_type_specifier): Add fix-it to
3114 diagnostic of invalid class/struct keyword after enum.
3115
3116 2017-04-25 David Malcolm <dmalcolm@redhat.com>
3117
3118 * parser.c (cp_parser_member_declaration): Add fix-it hint
3119 for removing stray semicolons.
3120
3121 2017-04-25 David Malcolm <dmalcolm@redhat.com>
3122
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.
3127
3128 2017-04-25 David Malcolm <dmalcolm@redhat.com>
3129
3130 PR c++/80177
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.
3139
3140 2017-04-24 Volker Reichelt <v.reichelt@netcologne.de>
3141
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.
3151
3152 2017-04-24 David Malcolm <dmalcolm@redhat.com>
3153
3154 PR c++/80016
3155 * parser.c (cp_parser_unary_expression): Generate a location
3156 range for alignof and sizeof expressions.
3157
3158 2017-04-24 Volker Reichelt <v.reichelt@netcologne.de>
3159
3160 * parser.c (cp_parser_cv_qualifier_seq_opt): Add fix-it info to
3161 error message.
3162 (cp_parser_virt_specifier_seq_opt): Likewise.
3163 (set_and_check_decl_spec_loc): Likewise twice.
3164
3165 2017-04-21 Jason Merrill <jason@redhat.com>
3166
3167 PR c++/80179 - ICE with initialized flexible array member.
3168 * constexpr.c (verify_ctor_sanity): Handle flexible array members.
3169
3170 2017-04-21 Richard Biener <rguenther@suse.de>
3171
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.
3176
3177 2017-04-20 Jonathan Wakely <jwakely@redhat.com>
3178
3179 PR c++/80473
3180 * init.c (build_new_1): Suppress notes about over-aligned new when
3181 the warning is suppressed.
3182
3183 2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
3184
3185 * parser.c (cp_parser_member_declaration): Add warning with fixit
3186 information for extra semicolon after in-class function definition.
3187
3188 2017-04-20 Jakub Jelinek <jakub@redhat.com>
3189
3190 PR middle-end/80423
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
3194 on the shared type.
3195
3196 2017-04-18 Marek Polacek <polacek@redhat.com>
3197
3198 PR c++/80244 - ICE with attribute in template alias.
3199 * tree.c (strip_typedefs): Handle UNDERLYING_TYPE.
3200
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.
3205
3206 2017-04-17 Bernd Edlinger <bernd.edlinger@hotmail.de>
3207
3208 PR c++/80287
3209 * class.c (fixup_may_alias): Fix all type variants.
3210
3211 2017-04-17 Jason Merrill <jason@redhat.com>
3212
3213 PR c++/80415 - wrong error with default arg and array reference.
3214 * tree.c (lvalue_kind): Return clk_class for an array prvalue.
3215
3216 * pt.c (tsubst_init): Set TARGET_EXPR_DIRECT_INIT_P.
3217
3218 2017-04-15 Alexandre Oliva <aoliva@redhat.com>
3219
3220 * decl.c (name_unnamed_type): Split out of...
3221 (grokdeclarator): ... this.
3222 * decl.h (name_unnamed_type): Declare.
3223
3224 2017-04-12 Richard Biener <rguenther@suse.de>
3225 Bernd Edlinger <bernd.edlinger@hotmail.de>
3226
3227 PR middle-end/79671
3228 * tree.c (build_cplus_array_type): Set TYPE_TYPELESS_STORAGE
3229 for arrays of character or std::byte type.
3230
3231 2017-04-11 Jason Merrill <jason@redhat.com>
3232
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.
3238
3239 2017-04-11 Jakub Jelinek <jakub@redhat.com>
3240
3241 PR c++/80370
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
3246 processing.
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
3249 dependent.
3250
3251 2017-04-11 Jakub Jelinek <jakub@redhat.com>
3252
3253 PR c++/80363
3254 * error.c (dump_expr): Handle VEC_COND_EXPR like COND_EXPR.
3255
3256 2017-04-10 Jakub Jelinek <jakub@redhat.com>
3257
3258 PR c++/80176
3259 * tree.c (lvalue_kind): For COMPONENT_REF with BASELINK second
3260 operand, if it is a static member function, recurse on the
3261 BASELINK.
3262
3263 2017-04-10 Marek Polacek <polacek@redhat.com>
3264
3265 PR sanitizer/80348
3266 * typeck.c (cp_build_binary_op): Use NULL_TREE instead of NULL. Set
3267 ORIG_TYPE earlier and not only when shortening.
3268
3269 2017-04-07 Jason Merrill <jason@redhat.com>
3270
3271 PR c++/80356 - ICE with reference to function template argument.
3272 PR c++/79294
3273 * pt.c (convert_nontype_argument_function): Adjust type even with a
3274 value-dependent argument.
3275
3276 PR c++/80267 - ICE with nested capture of reference
3277 PR c++/60992
3278 * pt.c (tsubst_copy): Handle lookup finding a capture proxy.
3279
3280 2017-04-07 Marek Polacek <polacek@redhat.com>
3281
3282 PR sanitizer/80348
3283 * typeck.c (cp_build_binary_op): Convert COP[01] to ORIG_TYPE.
3284
3285 PR c++/80095
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.
3294
3295 2017-04-05 Jakub Jelinek <jakub@redhat.com>
3296
3297 PR c++/80309
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.
3302
3303 2017-04-04 Volker Reichelt <v.reichelt@netcologne.de>
3304
3305 PR c++/80296
3306 * cxx-pretty-print.c (cxx_pretty_printer::expression): Add
3307 UNARY_PLUS_EXPR case.
3308
3309 2017-04-03 Jason Merrill <jason@redhat.com>
3310
3311 * semantics.c (finish_template_type): Check CLASSTYPE_TEMPLATE_INFO.
3312
3313 2017-04-03 Jonathan Wakely <jwakely@redhat.com>
3314
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.
3320
3321 2017-04-03 Jason Merrill <jason@redhat.com>
3322
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.
3329
3330 2017-03-31 Jakub Jelinek <jakub@redhat.com>
3331
3332 PR c++/79572
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.
3336
3337 PR libstdc++/80251
3338 * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_AGGREGATE.
3339 * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
3340 CPTK_IS_AGGREGATE.
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.
3346
3347 2017-03-27 Jakub Jelinek <jakub@redhat.com>
3348
3349 PR middle-end/80162
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
3353 to ARRAY_TYPE.
3354 (cp_build_array_ref): Pass true as array_ref_p to cxx_mark_addressable.
3355
3356 2017-03-24 Jason Merrill <jason@redhat.com>
3357
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
3360 alias template.
3361
3362 2017-03-24 Marek Polacek <polacek@redhat.com>
3363
3364 PR c++/80119
3365 * cp-gimplify.c (cp_fold): Strip CLEANUP_POINT_EXPR if the expression
3366 doesn't have side effects.
3367
3368 2017-03-23 Jason Merrill <jason@redhat.com>
3369
3370 PR c++/80150 - ICE with overloaded variadic deduction.
3371 * pt.c (try_one_overload): Remove asserts.
3372
3373 PR c++/77563 - missing ambiguous conversion error.
3374 * call.c (convert_like_real): Use LOOKUP_IMPLICIT.
3375
3376 2017-03-23 Marek Polacek <polacek@redhat.com>
3377
3378 * cp-tree.h: Remove a C_RID_YYCODE reference.
3379
3380 2017-03-22 Jakub Jelinek <jakub@redhat.com>
3381
3382 PR c++/80141
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.
3386
3387 2017-03-21 Paolo Carlini <paolo.carlini@oracle.com>
3388
3389 PR c++/77752
3390 * name-lookup.c (pushtag_1): Add check for bogus, non template,
3391 std::initializer_list.
3392
3393 2017-03-21 Jakub Jelinek <jakub@redhat.com>
3394
3395 PR c++/35878
3396 * init.c (std_placement_new_fn_p, build_new_1): Formatting fixes.
3397
3398 2017-03-21 Ville Voutilainen <ville.voutilainen@gmail.com>
3399
3400 PR c++/35878
3401 * init.c (std_placement_new_fn_p): New.
3402 (build_new_1): Call it.
3403
3404 2017-03-20 Jason Merrill <jason@redhat.com>
3405
3406 PR c++/80096 - ICE with C++17 non-type auto.
3407 * pt.c (tsubst): Delay tsubst of type of template non-type
3408 parameter.
3409
3410 PR c++/79519 - ICE with deleted template friend.
3411 * decl.c (grokdeclarator): Complain about misplaced function
3412 definition using =, as well.
3413
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.
3417
3418 2017-03-20 Marek Polacek <polacek@redhat.com>
3419 Paolo Carlini <paolo.carlini@oracle.com>
3420
3421 PR c++/80059 - ICE with noexcept and __transaction_atomic
3422 * except.c (build_must_not_throw_expr): Call
3423 instantiate_non_dependent_expr.
3424
3425 2017-03-19 Jason Merrill <jason@redhat.com>
3426
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.
3430
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.
3434
3435 2017-03-17 Jason Merrill <jason@redhat.com>
3436
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.
3440
3441 PR c++/80073 - C++17 ICE with virtual base.
3442 * decl.c (xref_basetypes): Also check for indirect vbases.
3443
3444 2017-03-16 Jason Merrill <jason@redhat.com>
3445
3446 * decl.c (start_enum): std::byte aliases anything.
3447
3448 PR c++/79797
3449 * constexpr.c (lookup_placeholder): Tweak.
3450
3451 2017-03-15 Jason Merrill <jason@redhat.com>
3452
3453 PR c++/80043 - ICE with -fpermissive
3454 * typeck.c (convert_for_assignment): Handle instantiate_type
3455 not giving an error.
3456
3457 2017-03-14 Nathan Sidwell <nathan@acm.org>
3458
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.
3463
3464 2017-03-13 Nathan Sidwell <nathan@acm.org>
3465
3466 PR c++/79393 DR 1658 workaround
3467 * method.c (synthesized_method_walk): Check vbases of abstract
3468 classes for dtor walk.
3469
3470 2017-03-10 David Malcolm <dmalcolm@redhat.com>
3471
3472 PR translation/79848
3473 * decl.c (grokfndecl): Simplify uses of "%<%s%>" to "%qs".
3474
3475 2017-03-10 Jason Merrill <jason@redhat.com>
3476
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.
3482
3483 2017-03-10 Marek Polacek <polacek@redhat.com>
3484
3485 PR c++/79967
3486 * decl.c (grokdeclarator): Check ATTRLIST before dereferencing it.
3487
3488 2017-03-10 Jakub Jelinek <jakub@redhat.com>
3489
3490 PR c++/79899
3491 * optimize.c (maybe_thunk_body): Don't ICE if fns[0] is NULL.
3492 Use XALLOCAVEC macro.
3493
3494 PR c++/79896
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.
3499
3500 2017-03-09 Marek Polacek <polacek@redhat.com>
3501
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.
3505
3506 PR c++/79687 - wrong code with pointer-to-member
3507 * init.c (constant_value_1): Break if the variable has a dynamic
3508 initializer.
3509
3510 2017-03-08 Jason Merrill <jason@redhat.com>
3511
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.
3515
3516 2017-03-07 Jakub Jelinek <jakub@redhat.com>
3517
3518 PR c/79834
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.
3526
3527 2017-03-06 Marek Polacek <polacek@redhat.com>
3528
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.
3532
3533 2017-03-06 Jakub Jelinek <jakub@redhat.com>
3534
3535 PR c++/79822
3536 * constexpr.c (cxx_eval_statement_list): Treat empty ({ }) like
3537 ({ (void) 0; }).
3538
3539 2017-03-06 Jason Merrill <jason@redhat.com>
3540
3541 Revert "Allow deduction guides to look into primary template."
3542 * cp-tree.h, parser.c, pt.c, search.c: Revert.
3543
3544 2017-03-05 Paolo Carlini <paolo.carlini@oracle.com>
3545
3546 PR c++/70266
3547 * except.c (build_must_not_throw_expr): Perform the implicit
3548 conversions on the condition.
3549
3550 2017-03-03 Jason Merrill <jason@redhat.com>
3551
3552 * mangle.c (mangle_decl): Check -Wnoexcept-type instead of
3553 -Wc++1z-compat.
3554
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.
3560
3561 2017-03-03 Richard Biener <rguenther@suse.de>
3562
3563 PR c++/79825
3564 * cp-gimplify.c (simple_empty_class_p): Handle EMPTY_CLASS_EXPR.
3565
3566 2017-03-03 Marek Polacek <polacek@redhat.com>
3567
3568 PR c++/79791
3569 * typeck.c (string_conv_p): In C++11, always call pedwarn with
3570 OPT_Wwrite_strings.
3571
3572 2017-03-02 Jason Merrill <jason@redhat.com>
3573
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.
3579
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.
3594
3595 2017-03-02 Jakub Jelinek <jakub@redhat.com>
3596
3597 PR c++/79782
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.
3601
3602 2017-03-01 Jason Merrill <jason@redhat.com>
3603
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.
3613
3614 2017-03-01 Jakub Jelinek <jakub@redhat.com>
3615
3616 PR c++/79746
3617 * init.c (emit_mem_initializers): When not constructing vbases of
3618 abstract classes, mark arguments as read for
3619 -Wunused-but-set-parameter.
3620
3621 2017-02-28 Jason Merrill <jason@redhat.com>
3622
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.
3630
3631 2017-02-28 Jakub Jelinek <jakub@redhat.com>
3632
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
3643 message.
3644
3645 2017-02-27 Jason Merrill <jason@redhat.com>
3646
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.
3650
3651 2017-02-27 Marek Polacek <polacek@redhat.com>
3652
3653 * decl.c (expand_static_init): Add missing } in a comment.
3654
3655 2017-02-27 Volker Reichelt <v.reichelt@netcologne.de>
3656
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.
3663
3664 2017-02-25 Jakub Jelinek <jakub@redhat.com>
3665
3666 * call.c (build_op_delete_call): Make msg1 and msg2 const.
3667
3668 2017-02-24 Jakub Jelinek <jakub@redhat.com>
3669
3670 PR c++/79588
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
3674 here.
3675 * typeck.c (cp_build_function_call_vec): Adjust
3676 check_function_arguments caller.
3677
3678 2017-02-24 Marek Polacek <polacek@redhat.com>
3679
3680 PR translation/79705
3681 * decl.c (check_redeclaration_exception_specification): Mark a string
3682 for translation. Make the pointer const.
3683
3684 2017-02-23 Paolo Carlini <paolo.carlini@oracle.com>
3685
3686 PR c++/79361
3687 * pt.c (register_specialization): Check duplicate_decls return value
3688 for error_mark_node and pass it back.
3689
3690 2017-02-22 Jason Merrill <jason@redhat.com>
3691
3692 PR c++/79679 - missing destructor for argument
3693 * call.c (build_over_call): Don't pass tf_no_cleanup to argument
3694 conversions.
3695
3696 * pt.c (do_class_deduction): Handle 0 argument case.
3697
3698 2017-02-22 Jakub Jelinek <jakub@redhat.com>
3699
3700 PR c++/79664
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).
3707
3708 2017-02-22 Marek Polacek <polacek@redhat.com>
3709
3710 PR c++/79653
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
3714 error_mark_node.
3715
3716 PR c++/79657
3717 * semantics.c (finish_underlying_type): Bail out for incomplete enums.
3718
3719 2017-02-21 Jason Merrill <jason@redhat.com>
3720
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.
3725
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.
3729
3730 2017-02-21 Marek Polacek <polacek@redhat.com>
3731
3732 PR c++/79535
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.
3738
3739 2017-02-21 Jakub Jelinek <jakub@redhat.com>
3740 Paolo Carlini <paolo.carlini@oracle.com>
3741
3742 PR c++/79654
3743 * decl.c (cp_finish_decomp): Don't set decl's type to error_mark_node
3744 on error.
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.
3749
3750 2017-02-21 Jakub Jelinek <jakub@redhat.com>
3751
3752 PR sanitizer/79589
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.
3756
3757 PR c++/79655
3758 * constexpr.c (cxx_eval_array_reference): Diagnose negative subscript.
3759
3760 PR c++/79639
3761 * constexpr.c (cxx_eval_store_expression): If *valp is a PTRMEM_CST,
3762 call cplus_expand_constant on it first.
3763
3764 2017-02-19 Jason Merrill <jason@redhat.com>
3765
3766 PR c++/78139 - destructor needed by new-expression
3767 * call.c (build_special_member_call): Use tf_no_cleanup.
3768
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.
3772
3773 PR c++/79606 - ICE with this->base_member in NSDMI
3774 * class.c (build_base_path): Check processing_template_decl.
3775
3776 PR c++/79607 - ICE with T{} initializer
3777 * decl.c (type_dependent_init_p): Check the type of a CONSTRUCTOR.
3778
3779 PR c++/79566 - elaborated-type-specifier in range for
3780 * parser.c (cp_parser_simple_declaration): Fix check for type
3781 definition.
3782
3783 PR c++/79400 - confusing suggestion of 'noexcept'
3784 * parser.c (cp_parser_exception_specification_opt): Remove
3785 suggestion for deprecated dynamic exception-specification.
3786
3787 PR c++/79470 - partial ordering with reference parameters
3788 * pt.c (unify) [INDIRECT_REF]: Handle pack expansions.
3789
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.
3793
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.
3797
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.
3801
3802 2017-02-19 Paolo Carlini <paolo.carlini@oracle.com>
3803
3804 PR c++/79380
3805 * typeck.c (cxx_alignas_expr): Reject a non-integral alignas
3806 argument.
3807
3808 2017-02-19 Eric Fiselier <eric@efcs.ca>
3809 Jonathan Wakely <jwakely@redhat.com>
3810
3811 PR c++/69523
3812 * parser.c (cp_parser_unqualified_id): Use OPT_Wliteral_suffix to
3813 control warning about literal suffix identifiers without a leading
3814 underscore.
3815
3816 2017-02-17 Jason Merrill <jason@redhat.com>
3817
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.
3821
3822 PR c++/78690 - ICE with using and global type with same name
3823 * pt.c (type_dependent_object_expression_p): True for
3824 IDENTIFIER_NODE.
3825
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.
3829
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.
3832
3833 PR c++/79533 - C++17 ICE with temporary cast to reference
3834 * call.c (build_over_call): Conversion to a reference prevents copy
3835 elision.
3836
3837 2017-02-16 Jakub Jelinek <jakub@redhat.com>
3838 Jason Merrill <jason@redhat.com>
3839
3840 PR c++/79502 - lost nodiscard attribute
3841 * pt.c (apply_late_template_attributes): Do apply non-dependent
3842 attributes to types.
3843
3844 2017-02-16 Jason Merrill <jason@redhat.com>
3845
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.
3850
3851 PR c++/79050 - ICE with undeduced auto and LTO
3852 * decl.c (poplevel): Remove undeduced auto decls.
3853
3854 2017-02-16 Jakub Jelinek <jakub@redhat.com>
3855
3856 PR c++/79512
3857 * parser.c (cp_parser_omp_target): For -fopenmp-simd
3858 ignore #pragma omp target even when not followed by identifier.
3859
3860 2017-02-15 Jason Merrill <jason@redhat.com>
3861 Jakub Jelinek <jakub@redhat.com>
3862
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
3870 parms to omit.
3871
3872 2017-02-15 Martin Sebor <msebor@redhat.com>
3873
3874 PR c++/79363
3875 * init.c (maybe_reject_flexarray_init): New function.
3876 (perform_member_init): Call it.
3877
3878 2017-02-15 Jakub Jelinek <jakub@redhat.com>
3879
3880 PR c++/79301
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.
3884
3885 PR c++/79288
3886 * decl.c (grokdeclarator): For static data members, handle thread_p
3887 only after handling inline.
3888
3889 2017-02-14 Marek Polacek <polacek@redhat.com>
3890
3891 PR c++/79420
3892 PR c++/79463
3893 * parser.c (cp_parser_postfix_dot_deref_expression): Avoid
3894 clobbering if the postfix expression isn't an EXPR_P.
3895
3896 2017-02-13 Jason Merrill <jason@redhat.com>
3897
3898 PR c++/79461 - ICE with lambda in constexpr constructor
3899 * constexpr.c (build_data_member_initialization): Ignore
3900 initialization of a local variable.
3901
3902 2017-02-13 Jakub Jelinek <jakub@redhat.com>
3903
3904 * init.c (warn_placement_new_too_small): Add missing space in
3905 diagnostics.
3906 * parser.c (cp_parser_oacc_declare): Likewise.
3907 * mangle.c (maybe_check_abi_tags): Likewise.
3908
3909 PR c++/79232
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.
3913
3914 2017-02-13 Nathan Sidwell <nathan@acm.org>
3915
3916 PR c++/79296 - ICE mangling localized template instantiation
3917 * decl2.c (determine_visibility): Use template fn context for
3918 local class instantiations.
3919
3920 2017-02-11 Jason Merrill <jason@redhat.com>
3921
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
3926 placeholder.
3927 (replace_placeholders, replace_placeholders_r): Adjust.
3928 * cp-tree.h: Adjust.
3929
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.
3935
3936 2017-02-10 Jason Merrill <jason@redhat.com>
3937
3938 PR c++/78908 - template ops and bitfields
3939 * tree.c (build_min_non_dep): Use unlowered_expr_type.
3940
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.
3944
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.
3948
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.
3952
3953 2017-02-10 Marek Polacek <polacek@redhat.com>
3954
3955 PR c++/79435
3956 * pt.c (type_dependent_expression_p): Check if the expression type
3957 is null.
3958
3959 PR c++/79184
3960 * cvt.c (ocp_convert): Add a sentinel against -Wint-in-bool-context
3961 if warnings shouldn't be given.
3962
3963 2017-02-10 Paolo Carlini <paolo.carlini@oracle.com>
3964
3965 PR c++/71737
3966 * pt.c (tsubst_decl): Don't try to preserve a typedef that names
3967 an error_mark_node as type.
3968
3969 2017-02-09 Jakub Jelinek <jakub@redhat.com>
3970 Jason Merrill <jason@redhat.com>
3971
3972 PR c++/79143
3973 * pt.c (instantiate_class_template_1): Copy CLASSTYPE_NON_AGGREGATE
3974 from pattern to type.
3975
3976 2017-02-09 Jason Merrill <jason@redhat.com>
3977
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
3982 constructors.
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.
3993
3994 2017-02-09 Jakub Jelinek <jakub@redhat.com>
3995
3996 PR c++/79429
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.
4003
4004 PR c/79431
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.
4008
4009 2016-02-09 Nathan Sidwell <nathan@codesourcery.com>
4010 Chung-Lin Tang <cltang@codesourcery.com>
4011
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.
4021
4022 2017-02-07 Nathan Sidwell <nathan@acm.org>
4023
4024 * method.c (synthesized_method_base_walk): New. Broken out of ...
4025 (synthesized_method_walk): ... here. Call it. Cleanup
4026 initializations.
4027
4028 2017-02-07 Patrick Palka <ppalka@gcc.gnu.org>
4029
4030 PR c++/79360
4031 * typeck2.c (process_init_constructor_union): Consider only
4032 FIELD_DECLs when looking for an NSDMI.
4033
4034 2017-02-06 Jason Merrill <jason@redhat.com>
4035
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.
4039
4040 2017-02-06 Jakub Jelinek <jakub@redhat.com>
4041
4042 PR c++/79379
4043 * constexpr.c (cxx_eval_constant_expression): Handle ANNOTATE_EXPR.
4044 (potential_constant_expression_1): Likewise.
4045
4046 PR c++/79377
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.
4049
4050 PR c++/79372
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.
4054
4055 2017-02-03 Jason Merrill <jason@redhat.com>
4056
4057 PR c++/78689 - ICE on constructor with label
4058 * optimize.c (maybe_clone_body): Replace omitted parameters with
4059 null lvalues.
4060 * class.c (build_clone): Fix logic for omitting inherited parms.
4061
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.
4066
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.
4070
4071 2017-02-02 Richard Biener <rguenther@suse.de>
4072
4073 PR cp/14179
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.
4077
4078 2017-02-02 Paolo Carlini <paolo.carlini@oracle.com>
4079
4080 PR c++/69637
4081 * decl2.c (grokbitfield): In case of error don't set-up DECL_INITIAL
4082 to the width.
4083
4084 2017-01-31 Jakub Jelinek <jakub@redhat.com>
4085
4086 PR c++/79304
4087 * error.c (dump_expr) <case COMPONENT_REF>: Don't print .
4088 after ARROW_EXPR.
4089
4090 2017-01-31 David Malcolm <dmalcolm@redhat.com>
4091
4092 PR c++/79298
4093 * name-lookup.c (suggest_alternative_in_explicit_scope): Resolve
4094 any namespace aliases.
4095
4096 2017-01-31 Nathan Sidwell <nathan@acm.org>
4097
4098 PR c++/79290
4099 * typeck.c (build_ptrmemfunc_access_expr): Set TREE_NO_WARNING.
4100
4101 PR c++/67273
4102 PR c++/79253
4103 * pt.c: (instantiate_decl): Push to top level when current
4104 function scope doesn't match. Only push lmabda scope stack when
4105 pushing to top.
4106
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.
4110
4111 PR c++/79264
4112 * lambda.c (maybe_generic_this_capture): Deal with template-id-exprs.
4113 * semantics.c (finish_member_declaration): Assert class is being
4114 defined.
4115
4116 2017-01-30 Alexandre Oliva <aoliva@redhat.com>
4117
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.
4143
4144 2017-01-27 Jason Merrill <jason@redhat.com>
4145
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.
4152
4153 2017-01-27 Adam Butcher <adam@jessamine.co.uk>
4154
4155 PR c++/64382
4156 * cp/parser.c (parsing_default_capturing_generic_lambda_in_template):
4157 New function.
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.
4162
4163 2017-01-26 Jakub Jelinek <jakub@redhat.com>
4164
4165 PR c++/68727
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
4176 as OBJECT_PTR.
4177
4178 2017-01-26 Jason Merrill <jason@redhat.com>
4179
4180 * name-lookup.c (parse_using_directive): Deprecate strong using.
4181
4182 PR c++/79176 - lambda ICE with -flto -Os
4183 * decl2.c (vague_linkage_p): Handle decloned 'tors.
4184 * tree.c (decl_linkage): Likewise.
4185
4186 2017-01-25 Martin Sebor <msebor@redhat.com>
4187
4188 * decl.c (grokdeclarator): Fix a typo in a comment.
4189
4190 2017-01-25 Jakub Jelinek <jakub@redhat.com>
4191
4192 PR c++/78896
4193 * decl.c (cp_finish_decomp): Disallow memberwise decomposition of
4194 lambda expressions.
4195
4196 PR c++/77914
4197 * parser.c (cp_parser_lambda_declarator_opt): Pedwarn with
4198 OPT_Wpedantic on lambda templates for -std=c++14 and higher.
4199
4200 2017-01-25 Maxim Ostapenko <m.ostapenko@samsung.com>
4201
4202 PR lto/79061
4203 * decl.c (cxx_init_decl_processing): Pass main_input_filename
4204 to build_translation_unit_decl.
4205
4206 2017-01-24 Jakub Jelinek <jakub@redhat.com>
4207
4208 PR c++/79205
4209 * cp-gimplify.c (cp_genericize_r): Add result of
4210 convert_from_reference on invisiref parm to p_set.
4211
4212 2017-01-24 Nathan Sidwell <nathan@acm.org>
4213
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.
4218
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
4223 call.
4224 (explain_invalid_constexpr_fn): Likewise.
4225
4226 2017-01-23 Nathan Sidwell <nathan@acm.org>
4227
4228 PR c++/71710 - template using directive of field
4229 * pt.c (tsubst_copy_and_build [COMPONENT_REF]): Move FIELD_DECL
4230 check earlier.
4231
4232 PR c++/71406 - ICE with scope-ref'd template id exprs
4233 PR c++/77508
4234 * typeck.c (finish_class_member_access_expr): Break up SCOPE_REF
4235 before breaking up TEMPLATE_ID_EXPR.
4236
4237 2017-01-20 Nathan Sidwell <nathan@acm.org>
4238
4239 PR c++/78495 - wrong code inherited ctor and invisi-ref parm
4240 * cp-gimplify.c (cp_generize_r): Don't skip thunks.
4241
4242 2017-01-20 David Malcolm <dmalcolm@redhat.com>
4243
4244 PR c++/77829
4245 PR c++/78656
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
4254 fuzzy name lookups.
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.
4266
4267 2017-01-20 Marek Polacek <polacek@redhat.com>
4268
4269 PR c/64279
4270 * call.c (build_conditional_expr_1): Warn about duplicated branches.
4271 * semantics.c (finish_expr_stmt): Build statement using the proper
4272 location.
4273
4274 2017-01-19 Jason Merrill <jason@redhat.com>
4275
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.
4281
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.
4286
4287 * decl.c (check_initializer): Always use build_aggr_init for array
4288 decomposition.
4289
4290 PR c++/79130 - decomposition and direct-initialization
4291 * init.c (build_aggr_init): Communicate direct-initialization to
4292 build_vec_init.
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.
4296
4297 2017-01-18 Jason Merrill <jason@redhat.com>
4298
4299 PR c++/68666 - member variable template-id
4300 * typeck.c (finish_class_member_access_expr): Handle variable
4301 template-id.
4302 * pt.c (lookup_and_finish_template_variable): No longer static.
4303 * cp-tree.h: Declare it.
4304
4305 2017-01-18 Nathan Sidwell <nathan@acm.org>
4306
4307 PR c++/78488
4308 * call.c (build_over_call): When checking ellipsis conversions for
4309 an inherited ctor, make sure there is at least one conversion.
4310
4311 2017-01-18 Jason Merrill <jason@redhat.com>
4312
4313 PR c++/78894 - ICE with class deduction and default arg
4314 * pt.c (build_deduction_guide): Set DECL_PRIMARY_TEMPLATE.
4315
4316 2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
4317
4318 PR c++/77489
4319 * mangle.c (write_discriminator): Reorganize abi warning check.
4320
4321 2017-01-18 Nathan Sidwell <nathan@acm.org>
4322
4323 * cp-tree.h: Clarify exception spec node comment.
4324 * except.c (nothrow_spec_p): Simplify by checking node-equality.
4325
4326 PR c++/79091
4327 * mangle.c (write_exception_spec): Check nothrow explicitly.
4328 (write_encoding): Don't increment processing_template_decl around
4329 encoding.
4330
4331 2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
4332
4333 PR c++/70182
4334 * mangle.c (write_template_args): Add "on" for operator names.
4335
4336 2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
4337
4338 PR c++/77489
4339 * mangle.c (write_discriminator): Handle discriminator >= 10.
4340
4341 2017-01-17 Nathan Sidwell <nathan@acm.org>
4342
4343 PR c++/61636
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.
4352
4353 2017-01-17 Aldy Hernandez <aldyh@redhat.com>
4354
4355 PR c++/70565
4356 * cp-array-notation.c (expand_array_notation_exprs): Handle
4357 OMP_PARALLEL.
4358
4359 2017-01-11 Jason Merrill <jason@redhat.com>
4360
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.
4364
4365 2017-01-11 Nathan Sidwell <nathan@acm.org>
4366
4367 PR c++/77812
4368 * name-lookup.c (set_namespace_binding_1): An overload of 1 decl
4369 is a new overload.
4370
4371 2017-01-11 Nathan Sidwell <nathan@acm.org>
4372
4373 * name-lookup.c (push_overloaded_decl_1): Refactor OVERLOAD creation.
4374
4375 2017-01-11 Jakub Jelinek <jakub@redhat.com>
4376
4377 PR c++/78341
4378 * parser.c (cp_parser_std_attribute_spec): Remove over-eager
4379 assertion. Formatting fix.
4380
4381 PR c++/72813
4382 * decl2.c (c_parse_final_cleanups): Set flag_syntax_only to 1 after
4383 writing PCH file.
4384
4385 2017-01-10 David Malcolm <dmalcolm@redhat.com>
4386
4387 PR c++/77949
4388 * parser.c (cp_parser_class_specifier_1): Only suggest inserting
4389 a missing semicolon if we have a valid insertion location for
4390 the fix-it hint.
4391
4392 2017-01-10 Jason Merrill <jason@redhat.com>
4393
4394 FI 20, decomposition declaration with parenthesized initializer.
4395 * parser.c (cp_parser_decomposition_declaration): Use
4396 cp_parser_initializer.
4397
4398 2017-01-09 Jason Merrill <jason@redhat.com>
4399
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.
4404
4405 2017-01-09 Jakub Jelinek <jakub@redhat.com>
4406
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.
4412
4413 2017-01-07 Jason Merrill <jason@redhat.com>
4414
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.
4423
4424 2017-01-05 Jakub Jelinek <jakub@redhat.com>
4425
4426 PR c++/78931
4427 * decl.c (cp_finish_decomp): Remove probe variable, if tt is
4428 REFERENCE_REF_P, set tt to its operand.
4429
4430 PR c++/78890
4431 * class.c (check_field_decls): Diagnose REFERENCE_TYPE fields in
4432 unions even for C++11 and later.
4433
4434 2017-01-05 Nathan Sidwell <nathan@acm.org>
4435
4436 PR c++/78765
4437 * pt.c (convert_nontype_argument): Don't try and see if integral
4438 or enum expressions are constants prematurely.
4439
4440 2017-01-04 Marek Polacek <polacek@redhat.com>
4441
4442 PR c++/64767
4443 * typeck.c (cp_build_binary_op): Warn when a pointer is compared with
4444 a zero character literal.
4445
4446 2017-01-04 Jakub Jelinek <jakub@redhat.com>
4447
4448 PR c++/78949
4449 * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
4450 vector type.
4451
4452 PR c++/78693
4453 * parser.c (cp_parser_simple_declaration): Only complain about
4454 inconsistent auto deduction if auto_result doesn't use auto.
4455
4456 * parser.c (cp_parser_simple_declaration): Diagnose function
4457 declaration among more than one init-declarators with auto
4458 specifier.
4459
4460 PR c++/71182
4461 * parser.c (cp_lexer_previous_token): Use vec_safe_address in the
4462 assertion, as lexer->buffer may be NULL.
4463
4464 2017-01-04 Marek Polacek <polacek@redhat.com>
4465
4466 PR c++/77545
4467 PR c++/77284
4468 * constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT.
4469
4470 2017-01-04 Nathan Sidwell <nathan@acm.org>
4471
4472 PR c++/66735
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
4478 error checking.
4479 * pt.c (tsubst): Adjust lambda_capture_field_type call.
4480
4481 2017-01-01 Jakub Jelinek <jakub@redhat.com>
4482
4483 Update copyright years.
4484 \f
4485 Copyright (C) 2017 Free Software Foundation, Inc.
4486
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.