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