PR c++/58761
[official-gcc.git] / gcc / cp / ChangeLog
blob822f79be33c113f7e6980825adf22241299d1cc6
1 2014-05-19  Jason Merrill  <jason@redhat.com>
3         PR c++/58761
4         * pt.c (tsubst_copy): Don't check at_function_scope_p.
5         (instantiate_class_template_1): Don't push_to_top_level in an nsdmi.
7 2014-05-19  Paolo Carlini  <paolo.carlini@oracle.com>
9         * typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
10         * parser.c (cp_parser_enum_specifier): Likewise.
12 2014-05-17  Trevor Saunders  <tsaunders@mozilla.com>
14         * class.c (sorted_fields_type_new): Adjust.
15         * cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Likewise.
16         * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
17         * cp-tree.h: Remove usage of variable_size gty attribute.
18         * decl.c (make_label_decl): Adjust.
19         (check_goto): Likewise.
20         (start_preparsed_function): Likewise.
21         (save_function_data): Likewise.
22         * lex.c (init_reswords): Likewise.
23         (retrofit_lang_decl): Likewise.
24         (cxx_dup_lang_specific_decl): Likewise.
25         (copy_lang_type): Likewise.
26         (cxx_make_type): Likewise.
27         * name-lookup.c (binding_entry_make): Likewise.
28         (binding_table_construct): Likewise.
29         (binding_table_new): Likewise.
30         (cxx_binding_make): Likewise.
31         (pushdecl_maybe_friend_1): Likewise.
32         (begin_scope): Likewise.
33         (push_to_top_level): Likewise.
34         * parser.c (cp_lexer_alloc): Likewise.
35         (cp_lexer_new_from_tokens): Likewise.
36         (cp_token_cache_new): Likewise.
37         (cp_parser_context_new): Likewise.
38         (cp_parser_new): Likewise.
39         (cp_parser_nested_name_specifier_opt): Likewise.
40         (cp_parser_template_id): Likewise.
41         * pt.c (maybe_process_partial_specialization): Likewise.
42         (register_specialization): Likewise.
43         (add_pending_template): Likewise.
44         (lookup_template_class_1): Likewise.
45         (push_tinst_level): Likewise.
46         * semantics.c (register_constexpr_fundef): Likewise.
47         (cxx_eval_call_expression): Likewise.
48         * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
50 2014-05-16  Paolo Carlini  <paolo.carlini@oracle.com>
52         PR c++/51640
53         * parser.c (cp_parser_diagnose_invalid_type_name): Early return
54         when cp_parser_lookup_name sets ambiguous_decls.
56 2014-05-15  Jason Merrill  <jason@redhat.com>
58         * call.c (print_conversion_rejection): Use loc consistently.
60 2014-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
62         * cp-tree.h (DIRECT_LIST_INIT_P): Add.
63         * call.c (convert_like_real, build_new_method_call_1): Use it.
64         * decl2.c (grokfield): Likewise.
65         * init.c (perform_member_init, build_aggr_init, expand_default_init,
66         build_new_1): Likewise.
67         * mangle.c (write_expression): Likewise.
68         * parser.c (cp_parser_late_parse_one_default_arg): Likewise.
70 2014-05-14  Jason Merrill  <jason@redhat.com>
72         PR c++/20332
73         PR c++/21631
74         * call.c (reference_binding): Treat lvalue/rvalue mismatch and
75         dropped cv-quals as a bad conversion.
76         (convert_like_real) [ck_ref_bind]: Explain them.
77         (compare_ics): Check badness before stripping reference
78         bindings.  Handle comparing bad reference bindings.
79         * typeck.c (comp_cv_qualification): Add overload that just takes
80         integers.
81         * cp-tree.h: Declare it.
83         * call.c (struct conversion_info): Rename 'from_type' to 'from'.
84         (arg_conversion_rejection, bad_arg_conversion_rejection)
85         (explicit_conversion_rejection, template_conversion_rejection): Adjust.
86         (add_function_candidate): Pass actual argument, rather than type, to
87         bad_arg_conversion_rejection.
88         (print_conversion_rejection): Explain what's wrong with the conversion.
89         (print_z_candidates): Say "candidate:" before each candidate.
90         (splice_viable): Be strict if we see a viable or template candidate.
91         (build_user_type_conversion_1): Pass false to strict parameter.
92         (perform_overload_resolution, build_conditional_expr_1): Likewise.
93         (build_new_op_1, build_new_method_call_1): Likewise.
94         (build_op_call_1): Pass true to strict parameter.
96 2014-05-13  Jason Merrill  <jason@redhat.com>
98         * call.c (print_error_for_call_failure): Say "no match" rather
99         than "ambiguous" if there were no strict matches.
100         (build_new_method_call_1): Likewise.
102         PR c++/61151
103         * semantics.c (is_this_parameter): Allow capture proxies too.
105 2014-05-12  Jason Merrill  <jason@redhat.com>
107         * call.c (maybe_print_user_conv_context): New.
108         (convert_like_real): Use it.  Print call context for bad
109         user-defined conversion.
110         (build_over_call): Print call context for bad 'this' conversion.
112         * call.c (convert_like_real): Use inform for identifying the
113         declaration point.
115 2014-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
117         * cvt.c (cp_convert_to_pointer): Don't call error_at if
118         complain & tf_error is false.
120         * decl.c (make_unbound_class_template): Prefer inform for
121         "declared here"-type message.
123 2014-05-09  Momchil Velikov  <momchil.velikov@gmail.com>
125         PR c++/60463
126         PR c++/60755
127         * lambda.c (lambda_expr_this_capture): Add new parameter
128         add_capture_p controlling whether the functions will try to
129         capture 'this' via the default capture.
130         (maybe_resolve_dummy): Likewise.
131         * cp-tree.h: Adjust prototypes.
132         * call.c, semantics.c: Change callers of these functions.
133         * call.c (build_new_method_call_1): Use the actual 'this' that
134         would be potentially captured for the overload resolution, instead
135         of the dummy object.
137 2014-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
139         * pt.c (convert_nontype_argument_function): Add tsubst_flags_t
140         parameter.
141         (convert_nontype_argument): Adjust calls.
142         (coerce_template_parameter_pack): Add missing complain & tf_error
143         check.
145 2014-05-09  Jason Merrill  <jason@redhat.com>
147         DR 587
148         PR c++/51317
149         * call.c (build_conditional_expr_1, conditional_conversion): Handle
150         non-class lvalues and xvalues that differ only in cv-qualifiers.
152         DR 5
153         PR c++/60019
154         * call.c (build_user_type_conversion_1): The copy-init temporary
155         is cv-unqualified.
157         PR c++/58714
158         * tree.c (stabilize_expr): A stabilized prvalue is an xvalue.
160         PR c++/54348
161         * call.c (build_conditional_expr_1): If overload resolution finds
162         no match, just say "different types".
164         PR c++/32019
165         * call.c (build_conditional_expr_1): Improve ambiguity diagnostic.
167         PR c++/22434
168         * call.c (build_conditional_expr_1): Don't try to pool cv-quals
169         if we didn't find a conversion.
170         Don't accept a bad conversion too early.
172 2014-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
174         PR c++/13981
175         * typeck.c (convert_for_assignment): Provide an inform for pointers
176         to incomplete class types.
178 2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
180         PR c++/61083
181         * pt.c (convert_nontype_argument): Protect all the error calls
182         with complain & tf_error.
184 2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
186         PR c++/61080
187         * pt.c (instantiate_decl): Avoid generating the body of a
188         deleted function.
190 2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
192         PR c++/60999
193         * pt.c (maybe_begin_member_template_processing): Use
194         uses_template_parms.
196 2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
197             Mike Stump  <mikestump@comcast.net>
198             Richard Sandiford  <rdsandiford@googlemail.com>
200         * call.c: Include wide-int.h.
201         (type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
202         (convert_for_arg_passing): Likewise.
203         * class.c: Include wide-int.h.
204         (walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT.
205         (end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
206         (include_empty_classes): Likewise
207         (layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT.
208         * cvt.c: Include wide-int.h.
209         (ignore_overflows): Use wide_int_to_tree.
210         * decl.c: Include wide-int.h.
211         (check_array_designated_initializer): Use wide-int interfaces.
212         (compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT.
213         (finish_enum_value_list): Use signop.
214         (build_enumerator): Use wide-int interfaces.
215         * init.c: Include wide-int.h.
216         (build_new_1): Use wide-int interfaces.
217         * mangle.c: Include wide-int.h.
218         (write_integer_cst): Use wide-int interfaces.
219         (write_array_type): Likewise.
220         * tree.c: Include wide-int.h.
221         (cp_tree_equal): Use tree_int_cst_equal.
222         * typeck2.c: Include wide-int.h.
223         (process_init_constructor_array): Use wide-int interfaces.
225 2014-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
227         PR c++/58582
228         * decl.c (grokfndecl): Check duplicate_decls return value for
229         error_mark_node.
230         * pt.c (instantiate_decl): A deleted function is defined.
232 2014-05-02  Jason Merrill  <jason@redhat.com>
234         * decl2.c (vague_linkage_p): Local statics have vague linkage.
236         PR c++/60992
237         * lambda.c (lambda_capture_field_type): Wrap anything dependent
238         other than 'this'.
239         (add_capture): Check for VLA before calling it.
240         * semantics.c (is_this_parameter): Accept any 'this' parameter, not
241         just the current one.  Make non-static.
242         * cp-tree.h: Declare it.
243         * pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
244         the operand was static or constant.
246 2014-05-02  Marek Polacek  <polacek@redhat.com>
248         * typeck.c (maybe_warn_about_returning_address_of_local): Separate
249         warning_at calls.
251 2014-05-01  Marek Polacek  <polacek@redhat.com>
253         PR c/43395
254         * typeck.c (maybe_warn_about_returning_address_of_local): Distinguish
255         between label and variable when warning about returning local address.
257 2014-04-30  Jason Merrill  <jason@redhat.com>
259         PR c++/60980
260         * init.c (build_value_init): Don't try to call an array constructor.
262         PR c++/60951
263         * typeck2.c (massage_init_elt): Use maybe_constant_init.
265 2014-04-30  Marek Polacek  <polacek@redhat.com>
267         * typeck.c (cp_build_binary_op): Call ubsan_instrument_division
268         even when SANITIZE_FLOAT_DIVIDE is on.  Set doing_div_or_mod even
269         for non-integer types.
271 2014-04-29  Jason Merrill  <jason@redhat.com>
273         DR 1351
274         Represent the unevaluated exception specification of an implicitly
275         declared or deleted function with a simple placeholder, not a list
276         of functions.
277         * cp-tree.h (UNEVALUATED_NOEXCEPT_SPEC_P): New.
278         * except.c (unevaluated_noexcept_spec): New.
279         * class.c (deduce_noexcept_on_destructor): Use it.
280         * decl.c (check_redeclaration_exception_specification): Call
281         maybe_instantiate_noexcept.
282         (duplicate_decls): Call it before merge_types.
283         (start_preparsed_function): Call maybe_instantiate_noexcept.
284         * decl2.c (mark_used): Call maybe_instantiate_noexcept earlier.
285         * init.c (get_nsdmi): Factor out of perform_member_init.
286         * method.c (process_subob_fn): Call maybe_instantiate_noexcept.
287         (walk_field_subobs): Consider NSDMI for EH spec.
288         (get_defaulted_eh_spec): New.
289         (implicitly_declare_fn): Use unevaluated_noexcept_spec.
290         (defaulted_late_check): Defer EH checking in non-template classes.
291         (after_nsdmi_defaulted_late_checks): New.
292         * parser.c (cp_parser_class_specifier_1): Use it.
293         (unparsed_classes): New macro.
294         * parser.h (cp_unparsed_functions_entry_d): Add classes field.
295         * pt.c (maybe_instantiate_noexcept): Use get_defaulted_eh_spec.
296         Remove list-of-functions handling.
297         * typeck2.c (merge_exception_specifiers): Remove list-of-functions
298         handling and FN parameter.
299         * typeck.c (merge_types): Adjust.
301 2014-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
303         PR c++/59120
304         * parser.c (cp_parser_alias_declaration): Check return value of
305         cp_parser_require.
307 2014-04-24  Jakub Jelinek  <jakub@redhat.com>
309         * parser.c (cp_parser_omp_atomic): Allow seq_cst before
310         atomic-clause, allow comma in between atomic-clause and
311         seq_cst.
313 2014-04-24  Marc Glisse  <marc.glisse@inria.fr>
315         PR libstdc++/43622
316         * rtti.c (emit_support_tinfos): Do not iterate on
317         registered_builtin_types (partial revert).
319 2014-04-23 Dinar Temirbulatov  <dtemirbulatov@gmail.com>
321         PR c++/57958
322         * semantics.c (apply_deduced_return_type): Complete non-void type
323         before estimating whether the type is aggregate.
325 2014-04-22  Marc Glisse  <marc.glisse@inria.fr>
327         PR libstdc++/43622
328         * rtti.c (emit_support_tinfo_1): New function, extracted from
329         emit_support_tinfos.
330         (emit_support_tinfos): Call it and iterate on registered_builtin_types.
332 2014-04-22  Jakub Jelinek  <jakub@redhat.com>
334         PR c/59073
335         * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
336         fails, don't set OM_PARALLEL_COMBINED and return NULL.
338 2014-04-18  Jason Merrill  <jason@redhat.com>
340         DR 1571
341         * call.c (reference_binding): Recurse on user-defined conversion.
343         PR c++/60872
344         * call.c (standard_conversion): Don't try to apply restrict to void.
346 2014-04-16  Marc Glisse  <marc.glisse@inria.fr>
348         * decl.c (reshape_init_r): Handle a single element of vector type.
350 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
352         PR c++/60765
353         * decl2.c (cplus_decl_attributes): Handle
354         pointer-to-member-function declarations.
356 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
358         PR c++/60764
359         * call.c (build_user_type_coversion): Use build_dummy_object
360         to create the placeholder object for a constructor method call.
361         (build_special_member_call): Likewise.
362         (build_over_call): Check for the placeholder object with
363         is_dummy_object.
364         (build_new_method_call_1): Likewise.  Don't attempt to resolve
365         a dummy object for a constructor method call.
367 2014-04-16  Paul Pluzhnikov  <ppluzhnikov@google.com>
369         PR c++/59295
370         * friend.c (add_friend, make_friend_class): Move repeated friend
371         warning under Wredundant_decls.
373 2014-04-15  Paolo Carlini  <paolo.carlini@oracle.com>
375         * decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
376         * name-lookup.c (pushdecl_maybe_friend_1): Likewise.
377         (do_class_using_decl): Likewise.
378         * mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.
380 2014-04-15  Jakub Jelinek  <jakub@redhat.com>
382         PR plugins/59335
383         * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
385 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
387         * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
389 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
391         * pt.c (mark_template_parm): Use template_parm_level_and_index.
393 2014-04-11  Jason Merrill  <jason@redhat.com>
395         * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
396         * parser.c: Adjust.
397         (cp_lexer_get_preprocessor_token): Always clear it.
398         (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
400         DR 1467
401         PR c++/51747
402         * decl.c (reshape_init_r): Handle a single element of class type.
404         DR 1338
405         * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
406         built-in operator new.
408 2014-04-11  Paolo Carlini  <paolo.carlini@oracle.com>
410         PR c++/58600
411         * name-lookup.c (parse_using_directive): Return early if the
412         attribs argument is error_mark_node; use get_attribute_name.
414 2014-04-11  Jason Merrill  <jason@redhat.com>
416         DR 1030
417         PR c++/51253
418         * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
419         * call.c (struct z_candidate): Add flags field.
420         (add_candidate): Add flags parm.
421         (add_function_candidate, add_conv_candidate, build_builtin_candidate)
422         (add_template_candidate_real): Pass it.
423         (build_over_call): Set CALL_EXPR_LIST_INIT_P.
424         * tree.c (build_aggr_init_expr): Copy it.
425         * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
427 2014-04-10  Richard Biener  <rguenther@suse.de>
428             Jakub Jelinek  <jakub@redhat.com>
430         PR ipa/60761
431         * error.c (dump_decl) <case FUNCTION_DECL>: If
432         DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
433         recurse on DECL_ABSTRACT_ORIGIN instead of printing
434         <built-in>.
436 2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>
438         * pt.c (check_template_variable): Check for the return of pedwarn
439         before emitting a note.
440         * parser.c (cp_parser_lambda_introducer): Likewise.
442 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
444         PR c++/59115
445         * pt.c (process_template_parm): For an invalid non-type parameter
446         only set TREE_TYPE to error_mark_node.
447         (push_inline_template_parms_recursive, comp_template_parms,
448         redeclare_class_template, coerce_template_template_parm,
449         coerce_template_template_parms, unify): Use error_operand_p.
451 2014-04-08  Nathan Sidwell  <nathan@codesourcery.com>
453         * class.c (check_bases_and_members): Warn about non-virtual dtors
454         in public bases only.  Check warn_ecpp before complaining about
455         non-polymorphic bases.
457 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
459         * decl.c (duplicate_decls): Check for the return of warning_at
460         before emitting a note.
461         (warn_misplaced_attr_for_class_type): Likewise.
462         (check_tag_decl): Likewise.
464 2014-04-04  Paolo Carlini  <paolo.carlini@oracle.com>
466         PR c++/58207
467         * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
469 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
471         PR c++/44613
472         * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
473         * decl.c (cp_finish_decl): Create a new BIND_EXPR before
474         instantiating a variable-sized type.
476         PR c++/21113
477         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
479 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
481         * class.c (find_abi_tags_r): Check for the return of warning
482         before emitting a note.
483         (one_inherited_ctor): Likewise.
485 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
487         * decl.c (duplicate_decls): Check for the return of permerror
488         before emitting a note.
490 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
492         * class.c (accessible_nvdtor_p): New.
493         (check_bases): Don't check base destructor here ...
494         (check_bases_and_members): ... check them here.  Trigger on
495         Wnon-virtual-dtor flag.
496         (finish_struct_1): Use accessible_nvdtor_p.
498 2014-04-01  Jason Merrill  <jason@redhat.com>
500         * pt.c (process_partial_specialization): Say "not deducible"
501         rather than "not used".  Use inform.
503         PR c++/60374
504         * pt.c (coerce_template_parms): Check that the pack expansion
505         pattern works with the first matching parameter.
507 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
509         * init.c (perform_member_init): Homogenize uninitialized
510         diagnostics.
512 2014-04-01  Jason Merrill  <jason@redhat.com>
514         PR c++/60708
515         * call.c (build_array_conv): Call complete_type.
517         PR c++/60713
518         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
519         (picflag_from_initializer): Return it.
520         (process_init_constructor): Handle it.
522         PR c++/60642
523         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
524         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
525         * pt.c (get_template_info): Handle NAMESPACE_DECL.
526         (most_general_template): Handle more kinds of template.
527         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
528         instantiations and specializations.
530 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
532         PR c++/44859
533         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
534         COMPONENT_REFs and ARRAY_REFs sooner.
536 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
538         PR c++/60626
539         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
540         usage in non-functions with pushed scope.
542 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
544         PR c++/60573
545         * name-lookup.h (cp_binding_level): New transient field defining_class_p
546         to indicate whether a scope is in the process of defining a class.
547         * semantics.c (begin_class_definition): Set defining_class_p.
548         * name-lookup.c (leave_scope): Reset defining_class_p.
549         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
550         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
551         unwinding to class-defining scope to handle the erroneous definition of
552         a generic function of an arbitrarily nested class within an enclosing
553         class.
555 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
557         PR c++/52369
558         * method.c (walk_field_subobs): Improve the diagnostic
559         locations for both REFERENCE_TYPEs and non-static const members.
560         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
561         instead of %qD to be consistent with the c++11 diagnostic.
563 2014-03-25  Jason Merrill  <jason@redhat.com>
565         PR c++/60566
566         PR c++/58678
567         * class.c (build_vtbl_initializer): Handle abstract dtors here.
568         * search.c (get_pure_virtuals): Not here.
570         PR c++/60375
571         * parser.c (cp_parser_lambda_expression): Don't parse the body of
572         a lambda in unevaluated context.
574         PR c++/60628
575         * decl.c (create_array_type_for_decl): Complain about array of auto.
577 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
579         PR c++/60331
580         * semantics.c (potential_constant_expression_1): Handle
581         DECL_EXPR.
583 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
585         PR c++/60627
586         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
587         introducing an implicit function template parameter within an explicit
588         instantiation.
590 2014-03-22  Jason Merrill  <jason@redhat.com>
592         PR c++/60574
593         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
594         to error.
596 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
598         PR c++/60384
599         * name-lookup.c (push_class_level_binding_1): Check identifier_p
600         on the name argument.
602 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
604         PR c++/60572
605         * init.c (build_zero_init_1): Ignore fields with error_mark_node
606         type.
608 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
610         PR c++/51474
611         * call.c (build_new_method_call_1): Handle pure virtuals called by
612         NSDMIs too.
614 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
616         PR c++/60390
617         * parser.c (cp_parser_member_declaration): Don't allow
618         finish_fully_implicit_template to consider friend declarations to be
619         class member templates.
620         (synthesize_implicit_template_parm): Handling winding back through class
621         scope to the class being defined in order to inject a template argument
622         list.
624         PR c++/60391
625         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
626         function scope as per cp_parser_skip_to_end_of_statement.
628 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
630         PR c++/59571
631         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
633 2014-03-14  Jason Merrill  <jason@redhat.com>
635         PR c++/60532
636         PR c++/58678
637         * search.c (get_pure_virtuals): Handle abstract dtor here.
638         (dfs_get_pure_virtuals): Not here.
640         PR c++/58678
641         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
642         abstract class as pure.
644 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
646         PR c++/60383
647         * pt.c (maybe_process_partial_specialization): Check return value
648         of check_specialization_namespace.
650 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
652         PR c++/60254
653         * semantics.c (finish_static_assert): Call cxx_constant_value only
654         if require_potential_rvalue_constant_expression returns true.
656 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
658         PR c++/60389
659         * method.c (get_inherited_ctor): New.
660         * cp-tree.h (get_inherited_ctor): Declare it.
661         * semantics.c (is_valid_constexpr_fn): Use it.
663 2014-03-10  Jason Merrill  <jason@redhat.com>
665         PR c++/60367
666         * call.c (convert_default_arg): Remove special handling for
667         CONSTRUCTOR.
669         PR c++/53492
670         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
671         when deciding whether to call push_template_decl for a member class.
672         * pt.c (push_template_decl_real): Return after wrong levels error.
674 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
676         PR c++/60033
677         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
678         lambda, remove the lambda's own template argument list prior to fetching
679         the specialization.
681         PR c++/60393
682         * parser.c (cp_parser_parameter_declaration_clause): Move generic
683         function template unwinding on error into a more general location, ...
684         (cp_parser_skip_to_end_of_statement): ... here.
686 2014-03-07  Jason Merrill  <jason@redhat.com>
688         * Make-lang.in (check_g++_parallelize): Split dg.exp.
690         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
691         we're in a trailing return type.
693         * typeck.c (comp_template_parms_position): 'auto' and
694         'decltype(auto)' are different from real template parms.
696         * parser.c (cp_parser_using_declaration): Consume the semicolon
697         after bare parameter pack error.
699         * cp-tree.h (REF_PARENTHESIZED_P): New.
700         * semantics.c (force_paren_expr): Set it.
701         * pt.c (do_auto_deduction): Check it.
702         (tsubst) [COMPONENT_REF]: Copy it.
703         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
705         * decl.c (create_array_type_for_decl): Only warn about invalid
706         C++1y VLA if flag_iso or warn_vla>0.
707         (grokdeclarator): Likewise.
708         * pt.c (tsubst): Likewise.
709         * semantics.c (finish_decltype_type): Likewise.
710         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
711         (cp_build_addr_expr_1): Likewise.
712         * init.c (build_new_1): Improve diagnostics.
714 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
716         PR c++/58609
717         * decl.c (check_initializer): Return NULL_TREE after error;
718         consistently use inform.
720 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
722         * decl.c (check_initializer): Remove dead code.
724 2014-03-06  Marek Polacek  <polacek@redhat.com>
726         PR c/60197
727         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
728         of checking tree code.
730 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
732         * parser.c (cp_lexer_set_source_position): New.
733         (cp_parser_mem_initializer): Use it.
734         (cp_parser_postfix_open_square_expression): Likewise.
735         (cp_parser_parenthesized_expression_list): Likewise.
736         (cp_parser_new_initializer): Likewise.
737         (cp_parser_jump_statement): Likewise.
738         (cp_parser_initializer): Likewise.
739         (cp_parser_functional_cast): Likewise.
741 2014-03-05  Jason Merrill  <jason@redhat.com>
743         PR c++/60409
744         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
745         dependent expression.
747         PR c++/60361
748         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
749         if re-parsing might succeed.
750         * semantics.c (finish_id_expression): Use of a parameter outside
751         the function body is a parse error.
753         * parser.c (cp_parser_mem_initializer): Set input_location
754         properly for init-list warning.
755         (cp_parser_postfix_open_square_expression): Likewise.
756         (cp_parser_parenthesized_expression_list): Likewise.
757         (cp_parser_new_initializer): Likewise.
758         (cp_parser_jump_statement): Likewise.
759         (cp_parser_initializer): Likewise.
760         (cp_parser_functional_cast): Likewise.
762 2014-03-04  Jason Merrill  <jason@redhat.com>
764         PR c++/60417
765         * typeck2.c (process_init_constructor_record): Set
766         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
768         PR c++/60415
769         PR c++/54359
770         * parser.c (cp_parser_direct_declarator): Set declarator to
771         cp_error_declarator on invalid qualified-id.
773 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
775         PR c++/60376
776         * parser.c (cp_parser_using_declaration): Early return when
777         cp_parser_nested_name_specifier errors out.
779 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
781         PR c++/60377
782         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
783         function scope on parse error in function parameter list.
785 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
787         * method.c (implicitly_declare_fn): Remove redundant
788         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
789         * semantics.c (is_instantiation_of_constexpr): Likewise.
790         * error.c (dump_function_decl): Likewise.
792 2014-03-01  Jason Merrill  <jason@redhat.com>
794         PR c++/60379
795         * semantics.c (begin_maybe_infinite_loop): Use
796         fold_non_dependent_expr_sfinae.
798 2014-02-28  Jason Merrill  <jason@redhat.com>
800         PR c++/58845
801         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
803 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
805         PR c++/58610
806         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
807         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
808         * lambda.c (maybe_add_lambda_conv_op): Likewise.
810 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
812         PR c++/60253
813         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
814         error_at.
816 2014-02-27  Jason Merrill  <jason@redhat.com>
818         PR c++/60353
819         PR c++/55877
820         * decl2.c (tentative_decl_linkage): Don't mess with functions that
821         are not yet defined.
823 2014-02-26  Jason Merrill  <jason@redhat.com>
825         PR c++/60347
826         PR lto/53808
827         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
828         * init.c (build_vtbl_address): Do it here.
830         PR c++/59231
831         PR c++/11586
832         PR c++/14710
833         PR c++/57132
834         * pt.c (struct warning_sentinel): New.
835         (tsubst_copy_and_build): Use it instead of
836         c_inhibit_evaluation_warnings.
837         * typeck.c (maybe_warn_about_useless_cast): Remove
838         c_inhibit_evaluation_warnings check.
840         PR c++/54440
841         * pt.c (get_template_parm_index): New.
842         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
843         (process_template_parm): Allow bare packs in template template
844         parm template parms.
845         (coerce_template_parameter_pack): Handle fixed template template
846         parm packs and fixed packs not at the end of the parm list.
847         (coerce_template_parms): Handle template parm packs not at the end
848         of the parm list.
849         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
851         PR c++/60182
852         * pt.c (unify): Ignore alias templates when deducing a template
853         template parameter.
855         PR c++/60345
856         Revert:
857         DR 1571
858         * call.c (reference_binding): Recurse on user-defined conversion.
859         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
861 2014-02-25  Jason Merrill  <jason@redhat.com>
863         DR 1571
864         * call.c (reference_binding): Recurse on user-defined conversion.
865         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
867         * call.c (print_conversion_rejection): Handle n_arg of -2.
868         (build_user_type_conversion_1): Pass it.
870         PR c++/55877
871         * decl2.c (no_linkage_error): Handle C++98 semantics.
872         (reset_type_linkage): Move from decl.c.
873         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
874         (bt_reset_linkage_2, reset_decl_linkage): New.
875         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
876         (cp_write_global_declarations): Move condition into no_linkage_error.
877         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
878         * semantics.c (expand_or_defer_fn_1): Factor out
879         tentative_decl_linkage.
880         * cp-tree.h: Adjust.
882         * decl2.c (finish_static_data_member_decl): Diagnose static data
883         member in unnamed class.
884         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
886         PR lto/53808
887         * class.c (clone_function_decl): Call note_vague_linkage_fn for
888         defaulted virtual dtor.
890         DR 1286
891         PR c++/60328
892         * pt.c (get_underlying_template): Fix equivalence calculation.
894 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
896         PR c++/60311
897         * parser.c (function_being_declared_is_template_p): Return false when
898         processing a template parameter list.
899         (cp_parser_parameter_declaration_clause): Don't set
900         auto_is_implicit_function_template_parm_p when processing a
901         template parameter list.
903         * parser.c (synthesize_implicit_template_parm): Inject new template
904         argument list appropriately when a generic member function
905         of a class template is declared out-of-line.
907         PR c++/60065
908         * parser.c (cp_parser_direct_declarator): Don't save and
909         restore num_template_parameter_lists around call to
910         cp_parser_parameter_declaration_list.
911         (function_being_declared_is_template_p): New predicate.
912         (cp_parser_parameter_declaration_list): Use
913         function_being_declared_is_template_p as predicate for
914         inspecting current function template parameter list length
915         rather than num_template_parameter_lists.
917 2014-02-24  Jason Merrill  <jason@redhat.com>
919         PR c++/60146
920         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
921         DECL_EXPR initialize a non-class iterator.
923         PR c++/60312
924         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
926 2014-02-21  Jason Merrill  <jason@redhat.com>
928         PR c++/58170
929         * parser.c (cp_parser_type_name): Always check dependency.
930         (cp_parser_type_specifier_seq): Call
931         cp_parser_parse_and_diagnose_invalid_type_name.
933         PR c++/60108
934         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
936         PR c++/60185
937         * parser.c (cp_parser_default_argument): Clear
938         current_class_ptr/current_class_ref like tsubst_default_argument.
940         PR c++/60252
941         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
942         than current_binding_level.
944         PR c++/60186
945         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
947         PR c++/60187
948         * parser.c (cp_parser_enum_specifier): Call
949         check_for_bare_parameter_packs.
951         PR c++/59347
952         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
953         erroneous typedef.
955         PR c++/60241
956         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
957         of the partial instantiation, not the most general template.
958         (maybe_process_partial_specialization): Reassign everything on
959         that list.
961         PR c++/60216
962         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
963         (check_explicit_specialization): Don't clone.
965         PR c++/60219
966         * pt.c (coerce_template_parms): Bail if argument packing fails.
968         PR c++/60224
969         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
970         Don't get confused by a CONSTRUCTOR that already has a type.
972         PR c++/60227
973         * call.c (build_array_conv): Don't crash on VLA.
975         PR c++/60248
976         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
978         PR c++/60252
979         * lambda.c (maybe_resolve_dummy): Don't try to capture this
980         in declaration context.
982         DR 1591
983         PR c++/60051
984         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
986         PR c++/60250
987         * parser.c (cp_parser_direct_declarator): Don't wrap a
988         type-dependent expression in a NOP_EXPR.
990         PR c++/60251
991         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
993         PR c++/60167
994         PR c++/60222
995         PR c++/58606
996         * parser.c (cp_parser_template_argument): Restore dereference.
997         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
998         (process_partial_specialization): Handle deref.
999         (unify): Likewise.
1001 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
1003         PR c++/60052
1004         PR c++/60053
1005         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
1006         implicit_template_scope upon leaving an out-of-line generic member
1007         function definition.
1009 2014-02-20  Kai Tietz  <ktietz@redhat.com>
1011         PR c++/58873
1012         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
1013         valued type argument as error_mark_node.
1015         PR c++/58835
1016         * semantics.c (finish_fname): Handle error_mark_node.
1018 2014-02-19  Jason Merrill  <jason@redhat.com>
1020         PR c++/60046
1021         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
1022         spec from template context.
1024 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
1026         PR debug/56563
1027         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
1028         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
1030         PR c++/60267
1031         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
1033 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
1035         PR c++/60225
1036         * semantics.c (ensure_literal_type_for_constexpr_object): Use
1037         strip_array_types.
1039 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
1041         PR c++/60215
1042         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
1043         During error recovery allow_non_constant may be false.
1045 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
1047         PR c++/60190
1048         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
1049         scope whenever a template parameter list has been started, independent
1050         of whether the function call operator was well-formed or not.
1052         PR c++/60064
1053         * parser.c (cp_parser_member_declaration): Pop fully implicit template
1054         scope for generic friend declarations as well as for non-friends.
1056 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
1058         PR c++/60047
1059         * method.c (implicitly_declare_fn): A constructor of a class with
1060         virtual base classes isn't constexpr (7.1.5p4).
1062 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
1064         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
1066 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
1068         PR c++/58703
1069         * parser.c (cp_parser_omp_declare_reduction): Save and free
1070         declarator_obstack.
1072 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
1074         PR c++/53017
1075         PR c++/59211
1076         * tree.c (handle_init_priority_attribute): Call default_conversion on
1077         the attribute argument.
1079 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
1081         PR c++/58871
1082         * method.c (synthesized_method_walk): If vbases is non-null but
1083         is_empty is true, likewise don't worry about the virtual bases.
1085 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1087         PR c++/51219
1088         * typeck2.c (process_init_constructor_record): Just skip unnamed
1089         bit-fields.
1091 2014-01-31  Jason Merrill  <jason@redhat.com>
1093         PR c++/59469
1094         * pt.c (mark_decl_instantiated): Call mark_needed.
1096         PR c++/58672
1097         * decl2.c (handle_tls_init): Handle null init fn.
1099         PR c++/55800
1100         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
1102 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1104         PR c++/59082
1105         * class.c (build_vfield_ref): Early return error_mark_node if
1106         TYPE_VFIELD (type) is null.
1107         (build_base_path): Check return value of build_vfield_ref.
1109 2014-01-31  Jason Merrill  <jason@redhat.com>
1111         PR c++/59646
1112         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
1113         [ck_list]: Check for error_mark_node.
1114         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
1116         PR c++/57043
1117         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
1118         during partial ordering.
1120 2014-01-31  Marek Polacek  <polacek@redhat.com>
1122         PR c/59963
1123         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
1125 2014-01-30  Jason Merrill  <jason@redhat.com>
1127         PR c++/57899
1128         * cp-tree.h (struct saved_scope): Add x_local_specializations.
1129         (local_specializations): New macro.
1130         * pt.c (local_specializations): Remove variable.
1132 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
1134         PR c++/58708
1135         * parser.c (make_string_pack): Use double_int::from_buffer.
1137 2014-01-30  Marek Polacek  <polacek@redhat.com>
1139         PR c/59940
1140         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
1141         input_location.
1142         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
1143         with input_location.
1144         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
1145         loc parameter.
1147 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1149         PR c++/58843
1150         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
1152 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1154         PR c++/58649
1155         * pt.c (lookup_template_class_1): Check start_enum return value
1156         for error_mark_node.
1158 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1160         * decl.c (duplicate_decls, typename_hash, typename_compare):
1161         Use TYPE_IDENTIFIER.
1162         * error.c (dump_type): Likewise.
1163         * mangle.c (dump_substitution_candidates): Likewise.
1165 2014-01-30  Jason Merrill  <jason@redhat.com>
1167         PR c++/59633
1168         * decl2.c (attributes_naming_typedef_ok): New.
1169         * cp-tree.h: Declare it.
1170         * decl.c (grokdeclarator): Check it.
1171         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
1173 2014-01-29  Jason Merrill  <jason@redhat.com>
1175         PR c++/59707
1176         * call.c (add_builtin_candidate): Catch dependent types.
1178         PR c++/59989
1179         * pt.c (expand_template_argument_pack): Correct
1180         non_default_args_count calculation.
1182         PR c++/58466
1183         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
1185         PR c++/59956
1186         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
1187         have a friend template in a class template.
1188         * pt.c (tsubst_friend_function): Look through it.
1189         (push_template_decl_real): A friend member template is
1190         primary.
1192 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1194         PR c++/58846
1195         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
1196         == error_mark_node.
1198 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1200         PR c++/58674
1201         * pt.c (instantiate_template_1): Check for error_mark_node the second
1202         argument too.
1204 2014-01-29  Jason Merrill  <jason@redhat.com>
1206         PR c++/59916
1207         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
1208         cdtor_returns_this case.
1210         PR c++/59315
1211         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
1213 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1215         PR c++/58702
1216         * semantics.c (finish_omp_reduction_clause): Check type for
1217         error_mark_node.
1219 2014-01-28  Jason Merrill  <jason@redhat.com>
1221         PR c++/59791
1222         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
1223         (tsubst_copy): Use it if lookup fails.
1225         PR c++/59818
1226         * pt.c (tsubst_function_type): Make sure we keep the same function
1227         quals.
1229         PR c++/58701
1230         * semantics.c (build_anon_member_initialization): Stop walking
1231         when we run out of COMPONENT_REFs.
1233         PR c++/58632
1234         * decl.c (lookup_and_check_tag): Ignore template parameters if
1235         scope == ts_current.
1236         * pt.c (check_template_shadow): Don't complain about the injected
1237         class name.
1239         * decl.c (duplicate_decls): Tweak.
1241         PR c++/53756
1242         * mangle.c (write_unqualified_name): Handle operator auto.
1244 2014-01-27  Jason Merrill  <jason@redhat.com>
1246         PR c++/59823
1247         Core DR 1138
1248         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
1249         list-initialization.  A conversion to rvalue ref that involves
1250         an lvalue-rvalue conversion is bad.
1251         (convert_like_real): Give helpful error message.
1253         PR c++/54652
1254         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
1256         PR c++/58504
1257         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
1258         types.
1260         PR c++/58606
1261         * pt.c (template_parm_to_arg): Call convert_from_reference.
1262         (tsubst_template_arg): Don't strip reference refs.
1264         PR c++/58639
1265         * call.c (build_aggr_conv): Reject value-initialization of reference.
1267         PR c++/58812
1268         PR c++/58651
1269         * call.c (convert_like_real): Give helpful error about excess braces
1270         for ck_rvalue of scalar type.
1272         Core DR 1288
1273         * call.c (reference_binding): Only elide braces if the single
1274         element is reference-related.
1276         PR c++/58814
1277         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
1278         stabilizing.
1280         PR c++/58837
1281         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
1282         FUNCTION_DECL.
1284         PR c++/59097
1285         * decl.c (compute_array_index_type): Don't call
1286         maybe_constant_value for a non-integral expression.
1288 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1290         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
1291         flag_cilkplus.
1292         * cp-gimplify.c (cp_genericize): Likewise.
1293         * decl.c (grokfndecl): Likewise.
1294         * parser.c (cp_parser_postfix_expression): Likewise.
1295         (cp_parser_postfix_open_square_expression): Likewise.
1296         (cp_parser_direct_declarator): Likewise.
1297         (is_cilkplus_vector_p): Likewise.
1298         (cp_parser_omp_clause_name): Likewise.
1299         (cp_parser_omp_all_clauses): Likewise.
1300         * pt.c (apply_late_template_attributes): Likewise.
1301         * typeck.c (cp_build_array_ref): Likewise.
1302         (cp_build_compound_expr): Likewise.
1303         (check_return_expr): Likewise.
1305 2014-01-24  Jason Merrill  <jason@redhat.com>
1307         PR c++/58550
1308         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
1309         c++11 into error.
1311         PR c++/59886
1312         PR c++/59659
1313         * typeck2.c (process_init_constructor_array): Don't create
1314         RANGE_EXPR yet.
1316 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
1318         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
1319         handling for RANGE_ARRAY case.
1321 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
1323         PR c++/57524
1324         * name-lookup.c (push_using_directive): Use timevar_cond_start.
1326 2014-01-23  Marek Polacek  <polacek@redhat.com>
1328         PR c/59846
1329         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
1331 2014-01-23  Marek Polacek  <polacek@redhat.com>
1333         PR c/58346
1334         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
1335         an empty aggregate.
1337 2014-01-23  Jason Merrill  <jason@redhat.com>
1339         PR c++/55189
1340         * cp-tree.h (struct language_function): Add infinite_loop and
1341         infinite_loops.
1342         (current_function_infinite_loop): New.
1343         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
1344         (break_maybe_infinite_loop): New.
1345         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
1346         (finish_do_stmt, finish_for_cond, finish_for_stmt)
1347         (begin_range_for_stmt): Use them.
1348         * decl.c (finish_function): Don't warn about missing return
1349         if current_function_infinite_loop.
1350         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
1351         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
1353         * call.c (build_op_delete_call): Use make_tree_vector and
1354         release_tree_vector.
1356 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1358         PR c++/58980
1359         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
1360         nested_name_specifier.
1362 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1364         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
1365         see if there is an attribute after function decl.  If so, then
1366         parse them now.
1367         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
1368         enabled function late parsing.
1369         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
1370         attribute for a SIMD-enabled function.
1371         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
1372         the function is used by SIMD-enabled function (indicated by NULL
1373         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
1374         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
1375         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
1376         vectorlength clause in SIMD-enabled function and #pragma SIMD's
1377         vectorlength clause.  Added a new bool parameter to differentiate
1378         between the two.
1379         (cp_parser_cilk_simd_fn_vector_attrs): New function.
1380         (is_cilkplus_vector_p): Likewise.
1381         (cp_parser_late_parsing_elem_fn_info): Likewise.
1382         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
1383         and "vectorlength" clauses when Cilk Plus is enabled.
1384         (cp_parser_omp_clause_linear): Added a new parameter of type bool
1385         and emit a sorry message when step size is a parameter.
1386         * parser.h (cp_parser::cilk_simd_fn_info): New field.
1387         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
1388         flag_openmp.
1389         * pt.c (apply_late_template_attributes): Likewise.
1391 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
1393         PR middle-end/58809
1394         * semantics.c (finish_omp_reduction_clause): Reject
1395         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
1397 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1399         PR c++/59482
1400         * parser.c (cp_parser_class_head): Push the class before parsing
1401         the base-clause, pop after it.
1403 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
1405         * decl2.c (cpp_check): Revert prototype change.
1407 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1409         PR c++/59270
1410         PR c++/58811
1411         * init.c (build_value_init_noctor): Don't pass error_mark_node to
1412         build_value_init.
1414 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1416         PR c++/59269
1417         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
1418         only when errorcount == 0.
1420 2014-01-17  Marek Polacek  <polacek@redhat.com>
1422         PR c++/59838
1423         * cvt.c (ocp_convert): Don't segfault on non-existing
1424         ENUM_UNDERLYING_TYPE.
1426 2014-01-16  Jason Merrill  <jason@redhat.com>
1428         PR c++/59821
1429         * tree.c (bot_manip): Update the location of builtin_LINE and
1430         builtin_FILE calls.
1432 2014-01-14  Jason Merrill  <jason@redhat.com>
1434         PR c++/59659
1435         * typeck2.c (massage_init_elt): New.
1436         (process_init_constructor_record)
1437         (process_init_constructor_union): Use it.
1438         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
1439         (split_nonconstant_init_1): Handle it.
1440         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
1442 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1444         PR c++/59631
1445         * parser.c (cp_parser_postfix_expression): Added a new if-statement
1446         and replaced an existing if-statement with else-if statement.
1447         Changed an existing error message wording to match the one from the C
1448         parser.
1450 2014-01-08  Jason Merrill  <jason@redhat.com>
1452         PR c++/59614
1453         * class.c (abi_tag_data): Add tags field.
1454         (check_abi_tags): Initialize it.
1455         (find_abi_tags_r): Support collecting missing tags.
1456         (mark_type_abi_tags): Don't look at template args.
1457         (inherit_targ_abi_tags): New.
1458         (check_bases_and_members): Use it.
1459         * cp-tree.h (ABI_TAG_IMPLICIT): New.
1460         * mangle.c (write_abi_tags): Check it.
1462 2014-01-07  Jason Merrill  <jason@redhat.com>
1464         PR c++/58856
1465         * pt.c (num_innermost_template_parms): New.
1466         (get_underlying_template): Use it.
1468         PR c++/58965
1469         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
1471 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
1473         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1474         the letter of 20.11.6 about Base and Derived naming the same
1475         class type modulo cv-qualifiers.
1477 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
1479         PR c++/59635
1480         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1481         function as unimplemented for generic lambdas with varargs.
1483         PR c++/59636
1484         * parser.c (cp_parser_template_parameter): Early out with
1485         error_mark_node if parameter declaration was not parsed.
1487         PR c++/59629
1488         * parser.c (cp_parser_lambda_expression): Save/reset/restore
1489         auto_is_implicit_function_template_parm_p around lambda body.
1491         PR c++/59638
1492         * parser.c (cp_parser_init_declarator): Undo fully implicit
1493         template parameter list when declarator is not a function.
1495 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
1497         PR c++/58950
1498         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1500 2014-01-03  Tobias Burnus  <burnus@net-b.de>
1502         PR c++/58567
1503         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1505 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
1507         Core DR 1442
1508         PR c++/59165
1509         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1510         as include_std to perform_koenig_lookup.
1511         (cp_parser_postfix_expression): Adjust.
1512         * pt.c (tsubst_copy_and_build): Likewise.
1513         * semantics.c (perform_koenig_lookup): Remove bool parameter.
1514         (omp_reduction_lookup): Adjust.
1515         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1516         (lookup_arg_dependent): Likewise.
1517         (lookup_function_nonclass): Adjust.
1518         * name-lookup.h: Adjust declaration.
1519         * cp-tree.h: Likewise.
1521 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1523         PR c++/59087
1524         * parser.c (cp_parser_userdef_numeric_literal): Mention
1525         -fext-numeric-literals in the message.
1527 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1529         PR c++/59641
1530         * call.c (build_conditional_expr_1): Check the return value of
1531         force_rvalue.
1533 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1535         * call.c (convert_like_real): Check complain.
1537 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1539         PR c++/59378
1540         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1541         in templates.
1543 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1545         Update copyright years
1547 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1549         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1550         the standard form for the copyright notice.
1552 Copyright (C) 2014 Free Software Foundation, Inc.
1554 Copying and distribution of this file, with or without modification,
1555 are permitted in any medium without royalty provided the copyright
1556 notice and this notice are preserved.