DR 1227 PR c++/57543
[gcc.git] / gcc / cp / ChangeLog
1 2014-05-31 Paolo Carlini <paolo.carlini@oracle.com>
2
3 DR 1227
4 PR c++/57543
5 * cp-tree.h (TYPE_HAS_LATE_RETURN_TYPE): Add.
6 * pt.c (tsubst_function_type): Inject the this parameter; do the
7 substitutions in the order mandated by the DR.
8 (copy_default_args_to_explicit_spec): Copy TYPE_HAS_LATE_RETURN_TYPE.
9 * decl.c (grokdeclarator): Maybe set TYPE_HAS_LATE_RETURN_TYPE.
10 (static_fn_type): Copy it.
11 * decl2.c (build_memfn_type, change_return_type,
12 cp_reconstruct_complex_type): Likewise.
13 * parser.c (cp_parser_lambda_declarator_opt): Likewise.
14 * tree.c (strip_typedefs): Likewise.
15 * typeck.c (merge_types): Likewise.
16
17 2014-05-30 Jason Merrill <jason@redhat.com>
18
19 PR c++/56947
20 * pt.c (instantiate_decl): Check that defer_ok is not set for
21 local class members.
22
23 PR c++/60992
24 * pt.c (tsubst_init): Split out from...
25 (tsubst_expr) [DECL_EXPR]: Here.
26 (tsubst_copy) [VAR_DECL]: Use it.
27 * semantics.c (finish_id_expression): Return the decl for static/const.
28
29 2014-05-28 Jason Merrill <jason@redhat.com>
30
31 PR c++/47202
32 * decl.c (cxx_comdat_group): Return a decl.
33 * optimize.c (cdtor_comdat_group): Get its DECL_ASSEMBLER_NAME.
34
35 * pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown
36 bound.
37
38 PR c++/61242
39 * call.c (build_aggr_conv): Ignore passed in flags.
40 (build_array_conv, build_complex_conv): Likewise.
41
42 2014-05-23 Jan Hubicka <hubicka@ucw.cz>
43
44 * optimize.c (maybe_thunk_body): Use set_comdat_group.
45 (maybe_clone_body): Likewise.
46 * decl.c (duplicate_decls): Update code duplicating comdat group;
47 do not copy symtab pointer; before freeing newdecl remove it
48 from symtab.
49 * decl2.c (constrain_visibility): Use set_comdat_group.
50
51 2014-05-23 Jan Hubicka <hubicka@ucw.cz>
52
53 * rtti.c: Include tm_p.h
54 (emit_tinfo_decl): Force RTTI data to be aligned to required
55 ABI alignment only.
56
57 2014-05-23 Jan Hubicka <hubicka@ucw.cz>
58
59 * class.c (build_vtable): Align vtables to TARGET_VTABLE_ENTRY_ALIGN
60 ignoring other target adjustments.
61
62 2014-05-23 Thomas Schwinge <thomas@codesourcery.com>
63
64 * semantics.c (finish_omp_clauses): Remove duplicated variable
65 initialization.
66
67 * parser.c (cp_parser_omp_target): Return bool values.
68
69 2014-05-22 Paolo Carlini <paolo.carlini@oracle.com>
70
71 PR c++/61088
72 * lambda.c (add_capture): Enforce that capture by value requires
73 complete type.
74 * typeck2.c (cxx_incomplete_type_inform): Early return if
75 TYPE_MAIN_DECL is null.
76
77 2014-05-21 Jonathan Wakely <jwakely@redhat.com>
78
79 PR c/61271
80 * cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.
81
82 2014-05-21 Ville Voutilainen <ville.voutilainen@gmail.com>
83
84 PR c++/61133
85 * lambda.c (build_capture_proxy, add_capture): Treat normal
86 captures and init-captures identically.
87
88 2014-05-21 Mark Wielaard <mjw@redhat.com>
89
90 PR debug/16063
91 * cp-lang.c (cxx_enum_underlying_base_type): New function.
92 (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define.
93
94 2014-05-21 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
95
96 * cvt.c (convert_to_void): Use void_node instead of void_zero_node.
97 * cp-array-notation.c (replace_invariant_exprs): Likewise.
98 (expand_array_notation): Handle VOID_CST.
99 * error.c (dump_expr): Likewise.
100 * cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
101 (cxx_pretty_printer::expression): Likewise.
102 (pp_cxx_new_expression): Use void_node instead of void_zero_node.
103 * decl.c (register_dtor_fn): Likewise.
104 * init.c (build_raw_new_expr, build_new_1, build_vec_init)
105 (build_delete, push_base_cleanups): Likewise.
106 * mangle.c (write_expression): Likewise.
107 * semantics.c (finish_break_stmt, empty_expr_stmt_p): Likewise.
108 * pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
109 (tsubst, tsubst_copy, build_non_dependent_expr): Handle VOID_CST.
110 * tree.c (cp_tree_equal): Likewise.
111 (build_dummy_object, is_dummy_object, stabilize_expr): Use void_node
112 instead of void_zero_node.
113 * typeck.c (check_return_expr): Likewise.
114 * typeck2.c (build_functional_cast): Likewise.
115
116 2014-05-21 Igor Zamyatin <igor.zamyatin@intel.com>
117
118 PR c/60189
119 * parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
120 from here to...
121 (cp_parser_statement): ...here. Make sure only semicolon can go after
122 Cilk_sync.
123
124 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
125
126 PR c++/58753
127 PR c++/58930
128 PR c++/58704
129 * typeck2.c (digest_nsdmi_init): New.
130 * parser.c (cp_parser_late_parse_one_default_arg): Use it.
131 * init.c (get_nsdmi): Likewise.
132 * cp-tree.h (digest_nsdmi_init): Declare.
133
134 2014-05-20 Jason Merrill <jason@redhat.com>
135
136 * typeck.c (get_member_function_from_ptrfunc): Don't try to look
137 up a virtual function in a dummy object.
138
139 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
140
141 PR c++/60373
142 * decl.c (duplicate_decls): Replace pair of warning_at with
143 warning_at + inform.
144 (maybe_commonize_var): Likewise.
145
146 2014-05-20 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
147
148 PR bootstrap/61210
149 * pt.c (tsubst_copy, tsubst_omp_for_iterator, tsubst_expr)
150 (tsubst_copy_and_build): Perform recursive substitutions in a
151 deterministic order.
152
153 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
154
155 PR c++/58664
156 * typeck2.c (cxx_incomplete_type_inform): New.
157 (cxx_incomplete_type_diagnostic): Use it.
158 * decl.c (grokdeclarator): Check the element type of an
159 incomplete array type; call the above.
160 * cp-tree.h (cxx_incomplete_type_inform): Declare.
161
162 2014-05-19 Jason Merrill <jason@redhat.com>
163
164 PR c++/58761
165 * pt.c (tsubst_copy): Don't check at_function_scope_p.
166 (instantiate_class_template_1): Don't push_to_top_level in an nsdmi.
167
168 2014-05-19 Paolo Carlini <paolo.carlini@oracle.com>
169
170 * typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
171 * parser.c (cp_parser_enum_specifier): Likewise.
172
173 2014-05-17 Trevor Saunders <tsaunders@mozilla.com>
174
175 * class.c (sorted_fields_type_new): Adjust.
176 * cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Likewise.
177 * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
178 * cp-tree.h: Remove usage of variable_size gty attribute.
179 * decl.c (make_label_decl): Adjust.
180 (check_goto): Likewise.
181 (start_preparsed_function): Likewise.
182 (save_function_data): Likewise.
183 * lex.c (init_reswords): Likewise.
184 (retrofit_lang_decl): Likewise.
185 (cxx_dup_lang_specific_decl): Likewise.
186 (copy_lang_type): Likewise.
187 (cxx_make_type): Likewise.
188 * name-lookup.c (binding_entry_make): Likewise.
189 (binding_table_construct): Likewise.
190 (binding_table_new): Likewise.
191 (cxx_binding_make): Likewise.
192 (pushdecl_maybe_friend_1): Likewise.
193 (begin_scope): Likewise.
194 (push_to_top_level): Likewise.
195 * parser.c (cp_lexer_alloc): Likewise.
196 (cp_lexer_new_from_tokens): Likewise.
197 (cp_token_cache_new): Likewise.
198 (cp_parser_context_new): Likewise.
199 (cp_parser_new): Likewise.
200 (cp_parser_nested_name_specifier_opt): Likewise.
201 (cp_parser_template_id): Likewise.
202 * pt.c (maybe_process_partial_specialization): Likewise.
203 (register_specialization): Likewise.
204 (add_pending_template): Likewise.
205 (lookup_template_class_1): Likewise.
206 (push_tinst_level): Likewise.
207 * semantics.c (register_constexpr_fundef): Likewise.
208 (cxx_eval_call_expression): Likewise.
209 * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
210
211 2014-05-16 Paolo Carlini <paolo.carlini@oracle.com>
212
213 PR c++/51640
214 * parser.c (cp_parser_diagnose_invalid_type_name): Early return
215 when cp_parser_lookup_name sets ambiguous_decls.
216
217 2014-05-15 Jason Merrill <jason@redhat.com>
218
219 * call.c (print_conversion_rejection): Use loc consistently.
220
221 2014-05-14 Paolo Carlini <paolo.carlini@oracle.com>
222
223 * cp-tree.h (DIRECT_LIST_INIT_P): Add.
224 * call.c (convert_like_real, build_new_method_call_1): Use it.
225 * decl2.c (grokfield): Likewise.
226 * init.c (perform_member_init, build_aggr_init, expand_default_init,
227 build_new_1): Likewise.
228 * mangle.c (write_expression): Likewise.
229 * parser.c (cp_parser_late_parse_one_default_arg): Likewise.
230
231 2014-05-14 Jason Merrill <jason@redhat.com>
232
233 PR c++/20332
234 PR c++/21631
235 * call.c (reference_binding): Treat lvalue/rvalue mismatch and
236 dropped cv-quals as a bad conversion.
237 (convert_like_real) [ck_ref_bind]: Explain them.
238 (compare_ics): Check badness before stripping reference
239 bindings. Handle comparing bad reference bindings.
240 * typeck.c (comp_cv_qualification): Add overload that just takes
241 integers.
242 * cp-tree.h: Declare it.
243
244 * call.c (struct conversion_info): Rename 'from_type' to 'from'.
245 (arg_conversion_rejection, bad_arg_conversion_rejection)
246 (explicit_conversion_rejection, template_conversion_rejection): Adjust.
247 (add_function_candidate): Pass actual argument, rather than type, to
248 bad_arg_conversion_rejection.
249 (print_conversion_rejection): Explain what's wrong with the conversion.
250 (print_z_candidates): Say "candidate:" before each candidate.
251 (splice_viable): Be strict if we see a viable or template candidate.
252 (build_user_type_conversion_1): Pass false to strict parameter.
253 (perform_overload_resolution, build_conditional_expr_1): Likewise.
254 (build_new_op_1, build_new_method_call_1): Likewise.
255 (build_op_call_1): Pass true to strict parameter.
256
257 2014-05-13 Jason Merrill <jason@redhat.com>
258
259 * call.c (print_error_for_call_failure): Say "no match" rather
260 than "ambiguous" if there were no strict matches.
261 (build_new_method_call_1): Likewise.
262
263 PR c++/61151
264 * semantics.c (is_this_parameter): Allow capture proxies too.
265
266 2014-05-12 Jason Merrill <jason@redhat.com>
267
268 * call.c (maybe_print_user_conv_context): New.
269 (convert_like_real): Use it. Print call context for bad
270 user-defined conversion.
271 (build_over_call): Print call context for bad 'this' conversion.
272
273 * call.c (convert_like_real): Use inform for identifying the
274 declaration point.
275
276 2014-05-12 Paolo Carlini <paolo.carlini@oracle.com>
277
278 * cvt.c (cp_convert_to_pointer): Don't call error_at if
279 complain & tf_error is false.
280
281 * decl.c (make_unbound_class_template): Prefer inform for
282 "declared here"-type message.
283
284 2014-05-09 Momchil Velikov <momchil.velikov@gmail.com>
285
286 PR c++/60463
287 PR c++/60755
288 * lambda.c (lambda_expr_this_capture): Add new parameter
289 add_capture_p controlling whether the functions will try to
290 capture 'this' via the default capture.
291 (maybe_resolve_dummy): Likewise.
292 * cp-tree.h: Adjust prototypes.
293 * call.c, semantics.c: Change callers of these functions.
294 * call.c (build_new_method_call_1): Use the actual 'this' that
295 would be potentially captured for the overload resolution, instead
296 of the dummy object.
297
298 2014-05-09 Paolo Carlini <paolo.carlini@oracle.com>
299
300 * pt.c (convert_nontype_argument_function): Add tsubst_flags_t
301 parameter.
302 (convert_nontype_argument): Adjust calls.
303 (coerce_template_parameter_pack): Add missing complain & tf_error
304 check.
305
306 2014-05-09 Jason Merrill <jason@redhat.com>
307
308 DR 587
309 PR c++/51317
310 * call.c (build_conditional_expr_1, conditional_conversion): Handle
311 non-class lvalues and xvalues that differ only in cv-qualifiers.
312
313 DR 5
314 PR c++/60019
315 * call.c (build_user_type_conversion_1): The copy-init temporary
316 is cv-unqualified.
317
318 PR c++/58714
319 * tree.c (stabilize_expr): A stabilized prvalue is an xvalue.
320
321 PR c++/54348
322 * call.c (build_conditional_expr_1): If overload resolution finds
323 no match, just say "different types".
324
325 PR c++/32019
326 * call.c (build_conditional_expr_1): Improve ambiguity diagnostic.
327
328 PR c++/22434
329 * call.c (build_conditional_expr_1): Don't try to pool cv-quals
330 if we didn't find a conversion.
331 Don't accept a bad conversion too early.
332
333 2014-05-08 Paolo Carlini <paolo.carlini@oracle.com>
334
335 PR c++/13981
336 * typeck.c (convert_for_assignment): Provide an inform for pointers
337 to incomplete class types.
338
339 2014-05-07 Paolo Carlini <paolo.carlini@oracle.com>
340
341 PR c++/61083
342 * pt.c (convert_nontype_argument): Protect all the error calls
343 with complain & tf_error.
344
345 2014-05-07 Paolo Carlini <paolo.carlini@oracle.com>
346
347 PR c++/61080
348 * pt.c (instantiate_decl): Avoid generating the body of a
349 deleted function.
350
351 2014-05-06 Paolo Carlini <paolo.carlini@oracle.com>
352
353 PR c++/60999
354 * pt.c (maybe_begin_member_template_processing): Use
355 uses_template_parms.
356
357 2014-05-06 Kenneth Zadeck <zadeck@naturalbridge.com>
358 Mike Stump <mikestump@comcast.net>
359 Richard Sandiford <rdsandiford@googlemail.com>
360
361 * call.c: Include wide-int.h.
362 (type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
363 (convert_for_arg_passing): Likewise.
364 * class.c: Include wide-int.h.
365 (walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT.
366 (end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
367 (include_empty_classes): Likewise
368 (layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT.
369 * cvt.c: Include wide-int.h.
370 (ignore_overflows): Use wide_int_to_tree.
371 * decl.c: Include wide-int.h.
372 (check_array_designated_initializer): Use wide-int interfaces.
373 (compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT.
374 (finish_enum_value_list): Use signop.
375 (build_enumerator): Use wide-int interfaces.
376 * init.c: Include wide-int.h.
377 (build_new_1): Use wide-int interfaces.
378 * mangle.c: Include wide-int.h.
379 (write_integer_cst): Use wide-int interfaces.
380 (write_array_type): Likewise.
381 * tree.c: Include wide-int.h.
382 (cp_tree_equal): Use tree_int_cst_equal.
383 * typeck2.c: Include wide-int.h.
384 (process_init_constructor_array): Use wide-int interfaces.
385
386 2014-05-03 Paolo Carlini <paolo.carlini@oracle.com>
387
388 PR c++/58582
389 * decl.c (grokfndecl): Check duplicate_decls return value for
390 error_mark_node.
391 * pt.c (instantiate_decl): A deleted function is defined.
392
393 2014-05-02 Jason Merrill <jason@redhat.com>
394
395 * decl2.c (vague_linkage_p): Local statics have vague linkage.
396
397 PR c++/60992
398 * lambda.c (lambda_capture_field_type): Wrap anything dependent
399 other than 'this'.
400 (add_capture): Check for VLA before calling it.
401 * semantics.c (is_this_parameter): Accept any 'this' parameter, not
402 just the current one. Make non-static.
403 * cp-tree.h: Declare it.
404 * pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
405 the operand was static or constant.
406
407 2014-05-02 Marek Polacek <polacek@redhat.com>
408
409 * typeck.c (maybe_warn_about_returning_address_of_local): Separate
410 warning_at calls.
411
412 2014-05-01 Marek Polacek <polacek@redhat.com>
413
414 PR c/43395
415 * typeck.c (maybe_warn_about_returning_address_of_local): Distinguish
416 between label and variable when warning about returning local address.
417
418 2014-04-30 Jason Merrill <jason@redhat.com>
419
420 PR c++/60980
421 * init.c (build_value_init): Don't try to call an array constructor.
422
423 PR c++/60951
424 * typeck2.c (massage_init_elt): Use maybe_constant_init.
425
426 2014-04-30 Marek Polacek <polacek@redhat.com>
427
428 * typeck.c (cp_build_binary_op): Call ubsan_instrument_division
429 even when SANITIZE_FLOAT_DIVIDE is on. Set doing_div_or_mod even
430 for non-integer types.
431
432 2014-04-29 Jason Merrill <jason@redhat.com>
433
434 DR 1351
435 Represent the unevaluated exception specification of an implicitly
436 declared or deleted function with a simple placeholder, not a list
437 of functions.
438 * cp-tree.h (UNEVALUATED_NOEXCEPT_SPEC_P): New.
439 * except.c (unevaluated_noexcept_spec): New.
440 * class.c (deduce_noexcept_on_destructor): Use it.
441 * decl.c (check_redeclaration_exception_specification): Call
442 maybe_instantiate_noexcept.
443 (duplicate_decls): Call it before merge_types.
444 (start_preparsed_function): Call maybe_instantiate_noexcept.
445 * decl2.c (mark_used): Call maybe_instantiate_noexcept earlier.
446 * init.c (get_nsdmi): Factor out of perform_member_init.
447 * method.c (process_subob_fn): Call maybe_instantiate_noexcept.
448 (walk_field_subobs): Consider NSDMI for EH spec.
449 (get_defaulted_eh_spec): New.
450 (implicitly_declare_fn): Use unevaluated_noexcept_spec.
451 (defaulted_late_check): Defer EH checking in non-template classes.
452 (after_nsdmi_defaulted_late_checks): New.
453 * parser.c (cp_parser_class_specifier_1): Use it.
454 (unparsed_classes): New macro.
455 * parser.h (cp_unparsed_functions_entry_d): Add classes field.
456 * pt.c (maybe_instantiate_noexcept): Use get_defaulted_eh_spec.
457 Remove list-of-functions handling.
458 * typeck2.c (merge_exception_specifiers): Remove list-of-functions
459 handling and FN parameter.
460 * typeck.c (merge_types): Adjust.
461
462 2014-04-28 Paolo Carlini <paolo.carlini@oracle.com>
463
464 PR c++/59120
465 * parser.c (cp_parser_alias_declaration): Check return value of
466 cp_parser_require.
467
468 2014-04-24 Jakub Jelinek <jakub@redhat.com>
469
470 * parser.c (cp_parser_omp_atomic): Allow seq_cst before
471 atomic-clause, allow comma in between atomic-clause and
472 seq_cst.
473
474 2014-04-24 Marc Glisse <marc.glisse@inria.fr>
475
476 PR libstdc++/43622
477 * rtti.c (emit_support_tinfos): Do not iterate on
478 registered_builtin_types (partial revert).
479
480 2014-04-23 Dinar Temirbulatov <dtemirbulatov@gmail.com>
481
482 PR c++/57958
483 * semantics.c (apply_deduced_return_type): Complete non-void type
484 before estimating whether the type is aggregate.
485
486 2014-04-22 Marc Glisse <marc.glisse@inria.fr>
487
488 PR libstdc++/43622
489 * rtti.c (emit_support_tinfo_1): New function, extracted from
490 emit_support_tinfos.
491 (emit_support_tinfos): Call it and iterate on registered_builtin_types.
492
493 2014-04-22 Jakub Jelinek <jakub@redhat.com>
494
495 PR c/59073
496 * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
497 fails, don't set OM_PARALLEL_COMBINED and return NULL.
498
499 2014-04-18 Jason Merrill <jason@redhat.com>
500
501 DR 1571
502 * call.c (reference_binding): Recurse on user-defined conversion.
503
504 PR c++/60872
505 * call.c (standard_conversion): Don't try to apply restrict to void.
506
507 2014-04-16 Marc Glisse <marc.glisse@inria.fr>
508
509 * decl.c (reshape_init_r): Handle a single element of vector type.
510
511 2014-04-16 Patrick Palka <patrick@parcs.ath.cx>
512
513 PR c++/60765
514 * decl2.c (cplus_decl_attributes): Handle
515 pointer-to-member-function declarations.
516
517 2014-04-16 Patrick Palka <patrick@parcs.ath.cx>
518
519 PR c++/60764
520 * call.c (build_user_type_coversion): Use build_dummy_object
521 to create the placeholder object for a constructor method call.
522 (build_special_member_call): Likewise.
523 (build_over_call): Check for the placeholder object with
524 is_dummy_object.
525 (build_new_method_call_1): Likewise. Don't attempt to resolve
526 a dummy object for a constructor method call.
527
528 2014-04-16 Paul Pluzhnikov <ppluzhnikov@google.com>
529
530 PR c++/59295
531 * friend.c (add_friend, make_friend_class): Move repeated friend
532 warning under Wredundant_decls.
533
534 2014-04-15 Paolo Carlini <paolo.carlini@oracle.com>
535
536 * decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
537 * name-lookup.c (pushdecl_maybe_friend_1): Likewise.
538 (do_class_using_decl): Likewise.
539 * mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.
540
541 2014-04-15 Jakub Jelinek <jakub@redhat.com>
542
543 PR plugins/59335
544 * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
545
546 2014-04-14 Paolo Carlini <paolo.carlini@oracle.com>
547
548 * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
549
550 2014-04-14 Paolo Carlini <paolo.carlini@oracle.com>
551
552 * pt.c (mark_template_parm): Use template_parm_level_and_index.
553
554 2014-04-11 Jason Merrill <jason@redhat.com>
555
556 * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
557 * parser.c: Adjust.
558 (cp_lexer_get_preprocessor_token): Always clear it.
559 (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
560
561 DR 1467
562 PR c++/51747
563 * decl.c (reshape_init_r): Handle a single element of class type.
564
565 DR 1338
566 * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
567 built-in operator new.
568
569 2014-04-11 Paolo Carlini <paolo.carlini@oracle.com>
570
571 PR c++/58600
572 * name-lookup.c (parse_using_directive): Return early if the
573 attribs argument is error_mark_node; use get_attribute_name.
574
575 2014-04-11 Jason Merrill <jason@redhat.com>
576
577 DR 1030
578 PR c++/51253
579 * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
580 * call.c (struct z_candidate): Add flags field.
581 (add_candidate): Add flags parm.
582 (add_function_candidate, add_conv_candidate, build_builtin_candidate)
583 (add_template_candidate_real): Pass it.
584 (build_over_call): Set CALL_EXPR_LIST_INIT_P.
585 * tree.c (build_aggr_init_expr): Copy it.
586 * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
587
588 2014-04-10 Richard Biener <rguenther@suse.de>
589 Jakub Jelinek <jakub@redhat.com>
590
591 PR ipa/60761
592 * error.c (dump_decl) <case FUNCTION_DECL>: If
593 DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
594 recurse on DECL_ABSTRACT_ORIGIN instead of printing
595 <built-in>.
596
597 2014-04-09 Fabien Chêne <fabien@gcc.gnu.org>
598
599 * pt.c (check_template_variable): Check for the return of pedwarn
600 before emitting a note.
601 * parser.c (cp_parser_lambda_introducer): Likewise.
602
603 2014-04-08 Paolo Carlini <paolo.carlini@oracle.com>
604
605 PR c++/59115
606 * pt.c (process_template_parm): For an invalid non-type parameter
607 only set TREE_TYPE to error_mark_node.
608 (push_inline_template_parms_recursive, comp_template_parms,
609 redeclare_class_template, coerce_template_template_parm,
610 coerce_template_template_parms, unify): Use error_operand_p.
611
612 2014-04-08 Nathan Sidwell <nathan@codesourcery.com>
613
614 * class.c (check_bases_and_members): Warn about non-virtual dtors
615 in public bases only. Check warn_ecpp before complaining about
616 non-polymorphic bases.
617
618 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
619
620 * decl.c (duplicate_decls): Check for the return of warning_at
621 before emitting a note.
622 (warn_misplaced_attr_for_class_type): Likewise.
623 (check_tag_decl): Likewise.
624
625 2014-04-04 Paolo Carlini <paolo.carlini@oracle.com>
626
627 PR c++/58207
628 * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
629
630 2014-04-04 Patrick Palka <patrick@parcs.ath.cx>
631
632 PR c++/44613
633 * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
634 * decl.c (cp_finish_decl): Create a new BIND_EXPR before
635 instantiating a variable-sized type.
636
637 PR c++/21113
638 * decl.c (decl_jump_unsafe): Consider variably-modified decls.
639
640 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
641
642 * class.c (find_abi_tags_r): Check for the return of warning
643 before emitting a note.
644 (one_inherited_ctor): Likewise.
645
646 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
647
648 * decl.c (duplicate_decls): Check for the return of permerror
649 before emitting a note.
650
651 2014-04-03 Nathan Sidwell <nathan@codesourcery.com>
652
653 * class.c (accessible_nvdtor_p): New.
654 (check_bases): Don't check base destructor here ...
655 (check_bases_and_members): ... check them here. Trigger on
656 Wnon-virtual-dtor flag.
657 (finish_struct_1): Use accessible_nvdtor_p.
658
659 2014-04-01 Jason Merrill <jason@redhat.com>
660
661 * pt.c (process_partial_specialization): Say "not deducible"
662 rather than "not used". Use inform.
663
664 PR c++/60374
665 * pt.c (coerce_template_parms): Check that the pack expansion
666 pattern works with the first matching parameter.
667
668 2014-04-01 Fabien Chêne <fabien@gcc.gnu.org>
669
670 * init.c (perform_member_init): Homogenize uninitialized
671 diagnostics.
672
673 2014-04-01 Jason Merrill <jason@redhat.com>
674
675 PR c++/60708
676 * call.c (build_array_conv): Call complete_type.
677
678 PR c++/60713
679 * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
680 (picflag_from_initializer): Return it.
681 (process_init_constructor): Handle it.
682
683 PR c++/60642
684 * decl2.c (is_late_template_attribute): Don't defer abi_tag.
685 * mangle.c (write_unqualified_name): Fix abi_tag on templates.
686 * pt.c (get_template_info): Handle NAMESPACE_DECL.
687 (most_general_template): Handle more kinds of template.
688 * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
689 instantiations and specializations.
690
691 2014-03-31 Patrick Palka <patrick@parcs.ath.cx>
692
693 PR c++/44859
694 * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
695 COMPONENT_REFs and ARRAY_REFs sooner.
696
697 2014-03-29 Adam Butcher <adam@jessamine.co.uk>
698
699 PR c++/60626
700 * parser.c (cp_parser_init_declarator): Handle erroneous generic type
701 usage in non-functions with pushed scope.
702
703 2014-03-28 Adam Butcher <adam@jessamine.co.uk>
704
705 PR c++/60573
706 * name-lookup.h (cp_binding_level): New transient field defining_class_p
707 to indicate whether a scope is in the process of defining a class.
708 * semantics.c (begin_class_definition): Set defining_class_p.
709 * name-lookup.c (leave_scope): Reset defining_class_p.
710 * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
711 defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
712 unwinding to class-defining scope to handle the erroneous definition of
713 a generic function of an arbitrarily nested class within an enclosing
714 class.
715
716 2014-03-26 Fabien Chêne <fabien@gcc.gnu.org>
717
718 PR c++/52369
719 * method.c (walk_field_subobs): Improve the diagnostic
720 locations for both REFERENCE_TYPEs and non-static const members.
721 * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
722 instead of %qD to be consistent with the c++11 diagnostic.
723
724 2014-03-25 Jason Merrill <jason@redhat.com>
725
726 PR c++/60566
727 PR c++/58678
728 * class.c (build_vtbl_initializer): Handle abstract dtors here.
729 * search.c (get_pure_virtuals): Not here.
730
731 PR c++/60375
732 * parser.c (cp_parser_lambda_expression): Don't parse the body of
733 a lambda in unevaluated context.
734
735 PR c++/60628
736 * decl.c (create_array_type_for_decl): Complain about array of auto.
737
738 2014-03-25 Jakub Jelinek <jakub@redhat.com>
739
740 PR c++/60331
741 * semantics.c (potential_constant_expression_1): Handle
742 DECL_EXPR.
743
744 2014-03-24 Adam Butcher <adam@jessamine.co.uk>
745
746 PR c++/60627
747 * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
748 introducing an implicit function template parameter within an explicit
749 instantiation.
750
751 2014-03-22 Jason Merrill <jason@redhat.com>
752
753 PR c++/60574
754 * decl.c (grokdeclarator): Change permerror about 'virtual auto'
755 to error.
756
757 2014-03-21 Paolo Carlini <paolo.carlini@oracle.com>
758
759 PR c++/60384
760 * name-lookup.c (push_class_level_binding_1): Check identifier_p
761 on the name argument.
762
763 2014-03-20 Jakub Jelinek <jakub@redhat.com>
764
765 PR c++/60572
766 * init.c (build_zero_init_1): Ignore fields with error_mark_node
767 type.
768
769 2014-03-19 Paolo Carlini <paolo.carlini@oracle.com>
770
771 PR c++/51474
772 * call.c (build_new_method_call_1): Handle pure virtuals called by
773 NSDMIs too.
774
775 2014-03-17 Adam Butcher <adam@jessamine.co.uk>
776
777 PR c++/60390
778 * parser.c (cp_parser_member_declaration): Don't allow
779 finish_fully_implicit_template to consider friend declarations to be
780 class member templates.
781 (synthesize_implicit_template_parm): Handling winding back through class
782 scope to the class being defined in order to inject a template argument
783 list.
784
785 PR c++/60391
786 * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
787 function scope as per cp_parser_skip_to_end_of_statement.
788
789 2014-03-17 Paolo Carlini <paolo.carlini@oracle.com>
790
791 PR c++/59571
792 * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
793
794 2014-03-14 Jason Merrill <jason@redhat.com>
795
796 PR c++/60532
797 PR c++/58678
798 * search.c (get_pure_virtuals): Handle abstract dtor here.
799 (dfs_get_pure_virtuals): Not here.
800
801 PR c++/58678
802 * search.c (dfs_get_pure_virtuals): Treat the destructor of an
803 abstract class as pure.
804
805 2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
806
807 PR c++/60383
808 * pt.c (maybe_process_partial_specialization): Check return value
809 of check_specialization_namespace.
810
811 2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
812
813 PR c++/60254
814 * semantics.c (finish_static_assert): Call cxx_constant_value only
815 if require_potential_rvalue_constant_expression returns true.
816
817 2014-03-11 Paolo Carlini <paolo.carlini@oracle.com>
818
819 PR c++/60389
820 * method.c (get_inherited_ctor): New.
821 * cp-tree.h (get_inherited_ctor): Declare it.
822 * semantics.c (is_valid_constexpr_fn): Use it.
823
824 2014-03-10 Jason Merrill <jason@redhat.com>
825
826 PR c++/60367
827 * call.c (convert_default_arg): Remove special handling for
828 CONSTRUCTOR.
829
830 PR c++/53492
831 * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
832 when deciding whether to call push_template_decl for a member class.
833 * pt.c (push_template_decl_real): Return after wrong levels error.
834
835 2014-03-08 Adam Butcher <adam@jessamine.co.uk>
836
837 PR c++/60033
838 * pt.c (tsubst_copy): When retrieving a capture pack from a generic
839 lambda, remove the lambda's own template argument list prior to fetching
840 the specialization.
841
842 PR c++/60393
843 * parser.c (cp_parser_parameter_declaration_clause): Move generic
844 function template unwinding on error into a more general location, ...
845 (cp_parser_skip_to_end_of_statement): ... here.
846
847 2014-03-07 Jason Merrill <jason@redhat.com>
848
849 * Make-lang.in (check_g++_parallelize): Split dg.exp.
850
851 * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
852 we're in a trailing return type.
853
854 * typeck.c (comp_template_parms_position): 'auto' and
855 'decltype(auto)' are different from real template parms.
856
857 * parser.c (cp_parser_using_declaration): Consume the semicolon
858 after bare parameter pack error.
859
860 * cp-tree.h (REF_PARENTHESIZED_P): New.
861 * semantics.c (force_paren_expr): Set it.
862 * pt.c (do_auto_deduction): Check it.
863 (tsubst) [COMPONENT_REF]: Copy it.
864 * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
865
866 * decl.c (create_array_type_for_decl): Only warn about invalid
867 C++1y VLA if flag_iso or warn_vla>0.
868 (grokdeclarator): Likewise.
869 * pt.c (tsubst): Likewise.
870 * semantics.c (finish_decltype_type): Likewise.
871 * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
872 (cp_build_addr_expr_1): Likewise.
873 * init.c (build_new_1): Improve diagnostics.
874
875 2014-03-07 Paolo Carlini <paolo.carlini@oracle.com>
876
877 PR c++/58609
878 * decl.c (check_initializer): Return NULL_TREE after error;
879 consistently use inform.
880
881 2014-03-07 Paolo Carlini <paolo.carlini@oracle.com>
882
883 * decl.c (check_initializer): Remove dead code.
884
885 2014-03-06 Marek Polacek <polacek@redhat.com>
886
887 PR c/60197
888 * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
889 of checking tree code.
890
891 2014-03-06 Paolo Carlini <paolo.carlini@oracle.com>
892
893 * parser.c (cp_lexer_set_source_position): New.
894 (cp_parser_mem_initializer): Use it.
895 (cp_parser_postfix_open_square_expression): Likewise.
896 (cp_parser_parenthesized_expression_list): Likewise.
897 (cp_parser_new_initializer): Likewise.
898 (cp_parser_jump_statement): Likewise.
899 (cp_parser_initializer): Likewise.
900 (cp_parser_functional_cast): Likewise.
901
902 2014-03-05 Jason Merrill <jason@redhat.com>
903
904 PR c++/60409
905 * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
906 dependent expression.
907
908 PR c++/60361
909 * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
910 if re-parsing might succeed.
911 * semantics.c (finish_id_expression): Use of a parameter outside
912 the function body is a parse error.
913
914 * parser.c (cp_parser_mem_initializer): Set input_location
915 properly for init-list warning.
916 (cp_parser_postfix_open_square_expression): Likewise.
917 (cp_parser_parenthesized_expression_list): Likewise.
918 (cp_parser_new_initializer): Likewise.
919 (cp_parser_jump_statement): Likewise.
920 (cp_parser_initializer): Likewise.
921 (cp_parser_functional_cast): Likewise.
922
923 2014-03-04 Jason Merrill <jason@redhat.com>
924
925 PR c++/60417
926 * typeck2.c (process_init_constructor_record): Set
927 CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
928
929 PR c++/60415
930 PR c++/54359
931 * parser.c (cp_parser_direct_declarator): Set declarator to
932 cp_error_declarator on invalid qualified-id.
933
934 2014-03-04 Paolo Carlini <paolo.carlini@oracle.com>
935
936 PR c++/60376
937 * parser.c (cp_parser_using_declaration): Early return when
938 cp_parser_nested_name_specifier errors out.
939
940 2014-03-01 Adam Butcher <adam@jessamine.co.uk>
941
942 PR c++/60377
943 * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
944 function scope on parse error in function parameter list.
945
946 2014-03-01 Paolo Carlini <paolo.carlini@oracle.com>
947
948 * method.c (implicitly_declare_fn): Remove redundant
949 DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
950 * semantics.c (is_instantiation_of_constexpr): Likewise.
951 * error.c (dump_function_decl): Likewise.
952
953 2014-03-01 Jason Merrill <jason@redhat.com>
954
955 PR c++/60379
956 * semantics.c (begin_maybe_infinite_loop): Use
957 fold_non_dependent_expr_sfinae.
958
959 2014-02-28 Jason Merrill <jason@redhat.com>
960
961 PR c++/58845
962 * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
963
964 2014-02-28 Paolo Carlini <paolo.carlini@oracle.com>
965
966 PR c++/58610
967 * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
968 * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
969 * lambda.c (maybe_add_lambda_conv_op): Likewise.
970
971 2014-02-27 Paolo Carlini <paolo.carlini@oracle.com>
972
973 PR c++/60253
974 * call.c (convert_arg_to_ellipsis): Return error_mark_node after
975 error_at.
976
977 2014-02-27 Jason Merrill <jason@redhat.com>
978
979 PR c++/60353
980 PR c++/55877
981 * decl2.c (tentative_decl_linkage): Don't mess with functions that
982 are not yet defined.
983
984 2014-02-26 Jason Merrill <jason@redhat.com>
985
986 PR c++/60347
987 PR lto/53808
988 * class.c (clone_function_decl): Don't note_vague_linkage_fn.
989 * init.c (build_vtbl_address): Do it here.
990
991 PR c++/59231
992 PR c++/11586
993 PR c++/14710
994 PR c++/57132
995 * pt.c (struct warning_sentinel): New.
996 (tsubst_copy_and_build): Use it instead of
997 c_inhibit_evaluation_warnings.
998 * typeck.c (maybe_warn_about_useless_cast): Remove
999 c_inhibit_evaluation_warnings check.
1000
1001 PR c++/54440
1002 * pt.c (get_template_parm_index): New.
1003 (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
1004 (process_template_parm): Allow bare packs in template template
1005 parm template parms.
1006 (coerce_template_parameter_pack): Handle fixed template template
1007 parm packs and fixed packs not at the end of the parm list.
1008 (coerce_template_parms): Handle template parm packs not at the end
1009 of the parm list.
1010 (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
1011
1012 PR c++/60182
1013 * pt.c (unify): Ignore alias templates when deducing a template
1014 template parameter.
1015
1016 PR c++/60345
1017 Revert:
1018 DR 1571
1019 * call.c (reference_binding): Recurse on user-defined conversion.
1020 (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
1021
1022 2014-02-25 Jason Merrill <jason@redhat.com>
1023
1024 DR 1571
1025 * call.c (reference_binding): Recurse on user-defined conversion.
1026 (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
1027
1028 * call.c (print_conversion_rejection): Handle n_arg of -2.
1029 (build_user_type_conversion_1): Pass it.
1030
1031 PR c++/55877
1032 * decl2.c (no_linkage_error): Handle C++98 semantics.
1033 (reset_type_linkage): Move from decl.c.
1034 (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
1035 (bt_reset_linkage_2, reset_decl_linkage): New.
1036 (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
1037 (cp_write_global_declarations): Move condition into no_linkage_error.
1038 * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
1039 * semantics.c (expand_or_defer_fn_1): Factor out
1040 tentative_decl_linkage.
1041 * cp-tree.h: Adjust.
1042
1043 * decl2.c (finish_static_data_member_decl): Diagnose static data
1044 member in unnamed class.
1045 * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
1046
1047 PR lto/53808
1048 * class.c (clone_function_decl): Call note_vague_linkage_fn for
1049 defaulted virtual dtor.
1050
1051 DR 1286
1052 PR c++/60328
1053 * pt.c (get_underlying_template): Fix equivalence calculation.
1054
1055 2014-02-25 Adam Butcher <adam@jessamine.co.uk>
1056
1057 PR c++/60311
1058 * parser.c (function_being_declared_is_template_p): Return false when
1059 processing a template parameter list.
1060 (cp_parser_parameter_declaration_clause): Don't set
1061 auto_is_implicit_function_template_parm_p when processing a
1062 template parameter list.
1063
1064 * parser.c (synthesize_implicit_template_parm): Inject new template
1065 argument list appropriately when a generic member function
1066 of a class template is declared out-of-line.
1067
1068 PR c++/60065
1069 * parser.c (cp_parser_direct_declarator): Don't save and
1070 restore num_template_parameter_lists around call to
1071 cp_parser_parameter_declaration_list.
1072 (function_being_declared_is_template_p): New predicate.
1073 (cp_parser_parameter_declaration_list): Use
1074 function_being_declared_is_template_p as predicate for
1075 inspecting current function template parameter list length
1076 rather than num_template_parameter_lists.
1077
1078 2014-02-24 Jason Merrill <jason@redhat.com>
1079
1080 PR c++/60146
1081 * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
1082 DECL_EXPR initialize a non-class iterator.
1083
1084 PR c++/60312
1085 * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
1086
1087 2014-02-21 Jason Merrill <jason@redhat.com>
1088
1089 PR c++/58170
1090 * parser.c (cp_parser_type_name): Always check dependency.
1091 (cp_parser_type_specifier_seq): Call
1092 cp_parser_parse_and_diagnose_invalid_type_name.
1093
1094 PR c++/60108
1095 * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
1096
1097 PR c++/60185
1098 * parser.c (cp_parser_default_argument): Clear
1099 current_class_ptr/current_class_ref like tsubst_default_argument.
1100
1101 PR c++/60252
1102 * lambda.c (maybe_resolve_dummy): Check lambda_function rather
1103 than current_binding_level.
1104
1105 PR c++/60186
1106 * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
1107
1108 PR c++/60187
1109 * parser.c (cp_parser_enum_specifier): Call
1110 check_for_bare_parameter_packs.
1111
1112 PR c++/59347
1113 * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
1114 erroneous typedef.
1115
1116 PR c++/60241
1117 * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
1118 of the partial instantiation, not the most general template.
1119 (maybe_process_partial_specialization): Reassign everything on
1120 that list.
1121
1122 PR c++/60216
1123 * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
1124 (check_explicit_specialization): Don't clone.
1125
1126 PR c++/60219
1127 * pt.c (coerce_template_parms): Bail if argument packing fails.
1128
1129 PR c++/60224
1130 * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
1131 Don't get confused by a CONSTRUCTOR that already has a type.
1132
1133 PR c++/60227
1134 * call.c (build_array_conv): Don't crash on VLA.
1135
1136 PR c++/60248
1137 * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
1138
1139 PR c++/60252
1140 * lambda.c (maybe_resolve_dummy): Don't try to capture this
1141 in declaration context.
1142
1143 DR 1591
1144 PR c++/60051
1145 * pt.c (unify): Only unify if deducible. Handle 0-length list.
1146
1147 PR c++/60250
1148 * parser.c (cp_parser_direct_declarator): Don't wrap a
1149 type-dependent expression in a NOP_EXPR.
1150
1151 PR c++/60251
1152 * lambda.c (is_normal_capture_proxy): Handle VLA capture.
1153
1154 PR c++/60167
1155 PR c++/60222
1156 PR c++/58606
1157 * parser.c (cp_parser_template_argument): Restore dereference.
1158 * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
1159 (process_partial_specialization): Handle deref.
1160 (unify): Likewise.
1161
1162 2014-02-21 Adam Butcher <adam@jessamine.co.uk>
1163
1164 PR c++/60052
1165 PR c++/60053
1166 * parser.c (cp_parser_parameter_declaration_list): Correctly reset
1167 implicit_template_scope upon leaving an out-of-line generic member
1168 function definition.
1169
1170 2014-02-20 Kai Tietz <ktietz@redhat.com>
1171
1172 PR c++/58873
1173 * parser.c (cp_parser_functional_cast): Treat NULL_TREE
1174 valued type argument as error_mark_node.
1175
1176 PR c++/58835
1177 * semantics.c (finish_fname): Handle error_mark_node.
1178
1179 2014-02-19 Jason Merrill <jason@redhat.com>
1180
1181 PR c++/60046
1182 * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
1183 spec from template context.
1184
1185 2014-02-19 Jakub Jelinek <jakub@redhat.com>
1186
1187 PR debug/56563
1188 * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
1189 FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
1190
1191 PR c++/60267
1192 * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
1193
1194 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
1195
1196 PR c++/60225
1197 * semantics.c (ensure_literal_type_for_constexpr_object): Use
1198 strip_array_types.
1199
1200 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
1201
1202 PR c++/60215
1203 * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
1204 During error recovery allow_non_constant may be false.
1205
1206 2014-02-18 Adam Butcher <adam@jessamine.co.uk>
1207
1208 PR c++/60190
1209 * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
1210 scope whenever a template parameter list has been started, independent
1211 of whether the function call operator was well-formed or not.
1212
1213 PR c++/60064
1214 * parser.c (cp_parser_member_declaration): Pop fully implicit template
1215 scope for generic friend declarations as well as for non-friends.
1216
1217 2014-02-12 Paolo Carlini <paolo.carlini@oracle.com>
1218
1219 PR c++/60047
1220 * method.c (implicitly_declare_fn): A constructor of a class with
1221 virtual base classes isn't constexpr (7.1.5p4).
1222
1223 2014-02-05 Jan Hubicka <hubicka@ucw.cz
1224
1225 * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
1226
1227 2014-02-05 Jakub Jelinek <jakub@redhat.com>
1228
1229 PR c++/58703
1230 * parser.c (cp_parser_omp_declare_reduction): Save and free
1231 declarator_obstack.
1232
1233 2014-02-03 Marc Glisse <marc.glisse@inria.fr>
1234
1235 PR c++/53017
1236 PR c++/59211
1237 * tree.c (handle_init_priority_attribute): Call default_conversion on
1238 the attribute argument.
1239
1240 2014-02-03 Paolo Carlini <paolo.carlini@oracle.com>
1241
1242 PR c++/58871
1243 * method.c (synthesized_method_walk): If vbases is non-null but
1244 is_empty is true, likewise don't worry about the virtual bases.
1245
1246 2014-02-01 Paolo Carlini <paolo.carlini@oracle.com>
1247
1248 PR c++/51219
1249 * typeck2.c (process_init_constructor_record): Just skip unnamed
1250 bit-fields.
1251
1252 2014-01-31 Jason Merrill <jason@redhat.com>
1253
1254 PR c++/59469
1255 * pt.c (mark_decl_instantiated): Call mark_needed.
1256
1257 PR c++/58672
1258 * decl2.c (handle_tls_init): Handle null init fn.
1259
1260 PR c++/55800
1261 * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
1262
1263 2014-01-31 Paolo Carlini <paolo.carlini@oracle.com>
1264
1265 PR c++/59082
1266 * class.c (build_vfield_ref): Early return error_mark_node if
1267 TYPE_VFIELD (type) is null.
1268 (build_base_path): Check return value of build_vfield_ref.
1269
1270 2014-01-31 Jason Merrill <jason@redhat.com>
1271
1272 PR c++/59646
1273 * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
1274 [ck_list]: Check for error_mark_node.
1275 (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
1276
1277 PR c++/57043
1278 * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
1279 during partial ordering.
1280
1281 2014-01-31 Marek Polacek <polacek@redhat.com>
1282
1283 PR c/59963
1284 * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
1285
1286 2014-01-30 Jason Merrill <jason@redhat.com>
1287
1288 PR c++/57899
1289 * cp-tree.h (struct saved_scope): Add x_local_specializations.
1290 (local_specializations): New macro.
1291 * pt.c (local_specializations): Remove variable.
1292
1293 2014-01-30 Richard Sandiford <rdsandiford@googlemail.com>
1294
1295 PR c++/58708
1296 * parser.c (make_string_pack): Use double_int::from_buffer.
1297
1298 2014-01-30 Marek Polacek <polacek@redhat.com>
1299
1300 PR c/59940
1301 * typeck.c (build_ptrmemfunc1): Call convert_and_check with
1302 input_location.
1303 * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
1304 with input_location.
1305 * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
1306 loc parameter.
1307
1308 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
1309
1310 PR c++/58843
1311 * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
1312
1313 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
1314
1315 PR c++/58649
1316 * pt.c (lookup_template_class_1): Check start_enum return value
1317 for error_mark_node.
1318
1319 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
1320
1321 * decl.c (duplicate_decls, typename_hash, typename_compare):
1322 Use TYPE_IDENTIFIER.
1323 * error.c (dump_type): Likewise.
1324 * mangle.c (dump_substitution_candidates): Likewise.
1325
1326 2014-01-30 Jason Merrill <jason@redhat.com>
1327
1328 PR c++/59633
1329 * decl2.c (attributes_naming_typedef_ok): New.
1330 * cp-tree.h: Declare it.
1331 * decl.c (grokdeclarator): Check it.
1332 * tree.c (no_linkage_check): Handle VECTOR_TYPE.
1333
1334 2014-01-29 Jason Merrill <jason@redhat.com>
1335
1336 PR c++/59707
1337 * call.c (add_builtin_candidate): Catch dependent types.
1338
1339 PR c++/59989
1340 * pt.c (expand_template_argument_pack): Correct
1341 non_default_args_count calculation.
1342
1343 PR c++/58466
1344 * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
1345
1346 PR c++/59956
1347 * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
1348 have a friend template in a class template.
1349 * pt.c (tsubst_friend_function): Look through it.
1350 (push_template_decl_real): A friend member template is
1351 primary.
1352
1353 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
1354
1355 PR c++/58846
1356 * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
1357 == error_mark_node.
1358
1359 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
1360
1361 PR c++/58674
1362 * pt.c (instantiate_template_1): Check for error_mark_node the second
1363 argument too.
1364
1365 2014-01-29 Jason Merrill <jason@redhat.com>
1366
1367 PR c++/59916
1368 * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
1369 cdtor_returns_this case.
1370
1371 PR c++/59315
1372 * decl.c (cxx_maybe_build_cleanup): Call mark_used.
1373
1374 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
1375
1376 PR c++/58702
1377 * semantics.c (finish_omp_reduction_clause): Check type for
1378 error_mark_node.
1379
1380 2014-01-28 Jason Merrill <jason@redhat.com>
1381
1382 PR c++/59791
1383 * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
1384 (tsubst_copy): Use it if lookup fails.
1385
1386 PR c++/59818
1387 * pt.c (tsubst_function_type): Make sure we keep the same function
1388 quals.
1389
1390 PR c++/58701
1391 * semantics.c (build_anon_member_initialization): Stop walking
1392 when we run out of COMPONENT_REFs.
1393
1394 PR c++/58632
1395 * decl.c (lookup_and_check_tag): Ignore template parameters if
1396 scope == ts_current.
1397 * pt.c (check_template_shadow): Don't complain about the injected
1398 class name.
1399
1400 * decl.c (duplicate_decls): Tweak.
1401
1402 PR c++/53756
1403 * mangle.c (write_unqualified_name): Handle operator auto.
1404
1405 2014-01-27 Jason Merrill <jason@redhat.com>
1406
1407 PR c++/59823
1408 Core DR 1138
1409 * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
1410 list-initialization. A conversion to rvalue ref that involves
1411 an lvalue-rvalue conversion is bad.
1412 (convert_like_real): Give helpful error message.
1413
1414 PR c++/54652
1415 * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
1416
1417 PR c++/58504
1418 * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
1419 types.
1420
1421 PR c++/58606
1422 * pt.c (template_parm_to_arg): Call convert_from_reference.
1423 (tsubst_template_arg): Don't strip reference refs.
1424
1425 PR c++/58639
1426 * call.c (build_aggr_conv): Reject value-initialization of reference.
1427
1428 PR c++/58812
1429 PR c++/58651
1430 * call.c (convert_like_real): Give helpful error about excess braces
1431 for ck_rvalue of scalar type.
1432
1433 Core DR 1288
1434 * call.c (reference_binding): Only elide braces if the single
1435 element is reference-related.
1436
1437 PR c++/58814
1438 * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
1439 stabilizing.
1440
1441 PR c++/58837
1442 * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
1443 FUNCTION_DECL.
1444
1445 PR c++/59097
1446 * decl.c (compute_array_index_type): Don't call
1447 maybe_constant_value for a non-integral expression.
1448
1449 2014-01-24 Balaji V. Iyer <balaji.v.iyer@intel.com>
1450
1451 * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
1452 flag_cilkplus.
1453 * cp-gimplify.c (cp_genericize): Likewise.
1454 * decl.c (grokfndecl): Likewise.
1455 * parser.c (cp_parser_postfix_expression): Likewise.
1456 (cp_parser_postfix_open_square_expression): Likewise.
1457 (cp_parser_direct_declarator): Likewise.
1458 (is_cilkplus_vector_p): Likewise.
1459 (cp_parser_omp_clause_name): Likewise.
1460 (cp_parser_omp_all_clauses): Likewise.
1461 * pt.c (apply_late_template_attributes): Likewise.
1462 * typeck.c (cp_build_array_ref): Likewise.
1463 (cp_build_compound_expr): Likewise.
1464 (check_return_expr): Likewise.
1465
1466 2014-01-24 Jason Merrill <jason@redhat.com>
1467
1468 PR c++/58550
1469 * decl.c (grokdeclarator): Turn pedwarn about auto return type in
1470 c++11 into error.
1471
1472 PR c++/59886
1473 PR c++/59659
1474 * typeck2.c (process_init_constructor_array): Don't create
1475 RANGE_EXPR yet.
1476
1477 2014-01-24 Jakub Jelinek <jakub@redhat.com>
1478
1479 * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
1480 handling for RANGE_ARRAY case.
1481
1482 2014-01-24 Paolo Carlini <paolo.carlini@oracle.com>
1483
1484 PR c++/57524
1485 * name-lookup.c (push_using_directive): Use timevar_cond_start.
1486
1487 2014-01-23 Marek Polacek <polacek@redhat.com>
1488
1489 PR c/59846
1490 * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
1491
1492 2014-01-23 Marek Polacek <polacek@redhat.com>
1493
1494 PR c/58346
1495 * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
1496 an empty aggregate.
1497
1498 2014-01-23 Jason Merrill <jason@redhat.com>
1499
1500 PR c++/55189
1501 * cp-tree.h (struct language_function): Add infinite_loop and
1502 infinite_loops.
1503 (current_function_infinite_loop): New.
1504 * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
1505 (break_maybe_infinite_loop): New.
1506 (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
1507 (finish_do_stmt, finish_for_cond, finish_for_stmt)
1508 (begin_range_for_stmt): Use them.
1509 * decl.c (finish_function): Don't warn about missing return
1510 if current_function_infinite_loop.
1511 * pt.c (instantiate_decl): Copy current_function_infinite_loop.
1512 * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
1513
1514 * call.c (build_op_delete_call): Use make_tree_vector and
1515 release_tree_vector.
1516
1517 2014-01-23 Paolo Carlini <paolo.carlini@oracle.com>
1518
1519 PR c++/58980
1520 * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
1521 nested_name_specifier.
1522
1523 2014-01-23 Balaji V. Iyer <balaji.v.iyer@intel.com>
1524
1525 * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
1526 see if there is an attribute after function decl. If so, then
1527 parse them now.
1528 (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
1529 enabled function late parsing.
1530 (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
1531 attribute for a SIMD-enabled function.
1532 (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
1533 the function is used by SIMD-enabled function (indicated by NULL
1534 pragma token). Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
1535 PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
1536 (cp_parser_cilk_simd_vectorlength): Modified this function to handle
1537 vectorlength clause in SIMD-enabled function and #pragma SIMD's
1538 vectorlength clause. Added a new bool parameter to differentiate
1539 between the two.
1540 (cp_parser_cilk_simd_fn_vector_attrs): New function.
1541 (is_cilkplus_vector_p): Likewise.
1542 (cp_parser_late_parsing_elem_fn_info): Likewise.
1543 (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
1544 and "vectorlength" clauses when Cilk Plus is enabled.
1545 (cp_parser_omp_clause_linear): Added a new parameter of type bool
1546 and emit a sorry message when step size is a parameter.
1547 * parser.h (cp_parser::cilk_simd_fn_info): New field.
1548 * decl.c (grokfndecl): Added flag_enable_cilkplus along with
1549 flag_openmp.
1550 * pt.c (apply_late_template_attributes): Likewise.
1551
1552 2014-01-23 Jakub Jelinek <jakub@redhat.com>
1553
1554 PR middle-end/58809
1555 * semantics.c (finish_omp_reduction_clause): Reject
1556 BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
1557
1558 2014-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
1559
1560 PR c++/59482
1561 * parser.c (cp_parser_class_head): Push the class before parsing
1562 the base-clause, pop after it.
1563
1564 2014-01-20 Eric Botcazou <ebotcazou@adacore.com>
1565
1566 * decl2.c (cpp_check): Revert prototype change.
1567
1568 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1569
1570 PR c++/59270
1571 PR c++/58811
1572 * init.c (build_value_init_noctor): Don't pass error_mark_node to
1573 build_value_init.
1574
1575 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1576
1577 PR c++/59269
1578 * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
1579 only when errorcount == 0.
1580
1581 2014-01-17 Marek Polacek <polacek@redhat.com>
1582
1583 PR c++/59838
1584 * cvt.c (ocp_convert): Don't segfault on non-existing
1585 ENUM_UNDERLYING_TYPE.
1586
1587 2014-01-16 Jason Merrill <jason@redhat.com>
1588
1589 PR c++/59821
1590 * tree.c (bot_manip): Update the location of builtin_LINE and
1591 builtin_FILE calls.
1592
1593 2014-01-14 Jason Merrill <jason@redhat.com>
1594
1595 PR c++/59659
1596 * typeck2.c (massage_init_elt): New.
1597 (process_init_constructor_record)
1598 (process_init_constructor_union): Use it.
1599 (process_init_constructor_array): Use it. Use RANGE_EXPR.
1600 (split_nonconstant_init_1): Handle it.
1601 * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
1602
1603 2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
1604
1605 PR c++/59631
1606 * parser.c (cp_parser_postfix_expression): Added a new if-statement
1607 and replaced an existing if-statement with else-if statement.
1608 Changed an existing error message wording to match the one from the C
1609 parser.
1610
1611 2014-01-08 Jason Merrill <jason@redhat.com>
1612
1613 PR c++/59614
1614 * class.c (abi_tag_data): Add tags field.
1615 (check_abi_tags): Initialize it.
1616 (find_abi_tags_r): Support collecting missing tags.
1617 (mark_type_abi_tags): Don't look at template args.
1618 (inherit_targ_abi_tags): New.
1619 (check_bases_and_members): Use it.
1620 * cp-tree.h (ABI_TAG_IMPLICIT): New.
1621 * mangle.c (write_abi_tags): Check it.
1622
1623 2014-01-07 Jason Merrill <jason@redhat.com>
1624
1625 PR c++/58856
1626 * pt.c (num_innermost_template_parms): New.
1627 (get_underlying_template): Use it.
1628
1629 PR c++/58965
1630 * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
1631
1632 2014-01-07 Paolo Carlini <paolo.carlini@oracle.com>
1633
1634 * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1635 the letter of 20.11.6 about Base and Derived naming the same
1636 class type modulo cv-qualifiers.
1637
1638 2014-01-06 Adam Butcher <adam@jessamine.co.uk>
1639
1640 PR c++/59635
1641 * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1642 function as unimplemented for generic lambdas with varargs.
1643
1644 PR c++/59636
1645 * parser.c (cp_parser_template_parameter): Early out with
1646 error_mark_node if parameter declaration was not parsed.
1647
1648 PR c++/59629
1649 * parser.c (cp_parser_lambda_expression): Save/reset/restore
1650 auto_is_implicit_function_template_parm_p around lambda body.
1651
1652 PR c++/59638
1653 * parser.c (cp_parser_init_declarator): Undo fully implicit
1654 template parameter list when declarator is not a function.
1655
1656 2014-01-03 Marc Glisse <marc.glisse@inria.fr>
1657
1658 PR c++/58950
1659 * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1660
1661 2014-01-03 Tobias Burnus <burnus@net-b.de>
1662
1663 PR c++/58567
1664 * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1665
1666 2014-01-03 Paolo Carlini <paolo.carlini@oracle.com>
1667
1668 Core DR 1442
1669 PR c++/59165
1670 * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1671 as include_std to perform_koenig_lookup.
1672 (cp_parser_postfix_expression): Adjust.
1673 * pt.c (tsubst_copy_and_build): Likewise.
1674 * semantics.c (perform_koenig_lookup): Remove bool parameter.
1675 (omp_reduction_lookup): Adjust.
1676 * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1677 (lookup_arg_dependent): Likewise.
1678 (lookup_function_nonclass): Adjust.
1679 * name-lookup.h: Adjust declaration.
1680 * cp-tree.h: Likewise.
1681
1682 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1683
1684 PR c++/59087
1685 * parser.c (cp_parser_userdef_numeric_literal): Mention
1686 -fext-numeric-literals in the message.
1687
1688 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1689
1690 PR c++/59641
1691 * call.c (build_conditional_expr_1): Check the return value of
1692 force_rvalue.
1693
1694 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1695
1696 * call.c (convert_like_real): Check complain.
1697
1698 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1699
1700 PR c++/59378
1701 * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1702 in templates.
1703
1704 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
1705
1706 Update copyright years
1707
1708 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
1709
1710 * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1711 the standard form for the copyright notice.
1712 \f
1713 Copyright (C) 2014 Free Software Foundation, Inc.
1714
1715 Copying and distribution of this file, with or without modification,
1716 are permitted in any medium without royalty provided the copyright
1717 notice and this notice are preserved.