2014-04-16 Marc Glisse <marc.glisse@inria.fr>
[official-gcc.git] / gcc / cp / ChangeLog
blobe10a227221913a09515c5907f3e8edacb8cfc9d7
1 2014-04-16  Marc Glisse  <marc.glisse@inria.fr>
3         * decl.c (reshape_init_r): Handle a single element of vector type.
5 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
7         PR c++/60765
8         * decl2.c (cplus_decl_attributes): Handle
9         pointer-to-member-function declarations.
11 2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>
13         PR c++/60764
14         * call.c (build_user_type_coversion): Use build_dummy_object
15         to create the placeholder object for a constructor method call.
16         (build_special_member_call): Likewise.
17         (build_over_call): Check for the placeholder object with
18         is_dummy_object.
19         (build_new_method_call_1): Likewise.  Don't attempt to resolve
20         a dummy object for a constructor method call.
22 2014-04-16  Paul Pluzhnikov  <ppluzhnikov@google.com>
24         PR c++/59295
25         * friend.c (add_friend, make_friend_class): Move repeated friend
26         warning under Wredundant_decls.
28 2014-04-15  Paolo Carlini  <paolo.carlini@oracle.com>
30         * decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
31         * name-lookup.c (pushdecl_maybe_friend_1): Likewise.
32         (do_class_using_decl): Likewise.
33         * mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.
35 2014-04-15  Jakub Jelinek  <jakub@redhat.com>
37         PR plugins/59335
38         * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
40 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
42         * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
44 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
46         * pt.c (mark_template_parm): Use template_parm_level_and_index.
48 2014-04-11  Jason Merrill  <jason@redhat.com>
50         * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
51         * parser.c: Adjust.
52         (cp_lexer_get_preprocessor_token): Always clear it.
53         (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
55         DR 1467
56         PR c++/51747
57         * decl.c (reshape_init_r): Handle a single element of class type.
59         DR 1338
60         * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
61         built-in operator new.
63 2014-04-11  Paolo Carlini  <paolo.carlini@oracle.com>
65         PR c++/58600
66         * name-lookup.c (parse_using_directive): Return early if the
67         attribs argument is error_mark_node; use get_attribute_name.
69 2014-04-11  Jason Merrill  <jason@redhat.com>
71         DR 1030
72         PR c++/51253
73         * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
74         * call.c (struct z_candidate): Add flags field.
75         (add_candidate): Add flags parm.
76         (add_function_candidate, add_conv_candidate, build_builtin_candidate)
77         (add_template_candidate_real): Pass it.
78         (build_over_call): Set CALL_EXPR_LIST_INIT_P.
79         * tree.c (build_aggr_init_expr): Copy it.
80         * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
82 2014-04-10  Richard Biener  <rguenther@suse.de>
83             Jakub Jelinek  <jakub@redhat.com>
85         PR ipa/60761
86         * error.c (dump_decl) <case FUNCTION_DECL>: If
87         DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
88         recurse on DECL_ABSTRACT_ORIGIN instead of printing
89         <built-in>.
91 2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>
93         * pt.c (check_template_variable): Check for the return of pedwarn
94         before emitting a note.
95         * parser.c (cp_parser_lambda_introducer): Likewise.
97 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
99         PR c++/59115
100         * pt.c (process_template_parm): For an invalid non-type parameter
101         only set TREE_TYPE to error_mark_node.
102         (push_inline_template_parms_recursive, comp_template_parms,
103         redeclare_class_template, coerce_template_template_parm,
104         coerce_template_template_parms, unify): Use error_operand_p.
106 2014-04-08  Nathan Sidwell  <nathan@codesourcery.com>
108         * class.c (check_bases_and_members): Warn about non-virtual dtors
109         in public bases only.  Check warn_ecpp before complaining about
110         non-polymorphic bases.
112 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
114         * decl.c (duplicate_decls): Check for the return of warning_at
115         before emitting a note.
116         (warn_misplaced_attr_for_class_type): Likewise.
117         (check_tag_decl): Likewise.
119 2014-04-04  Paolo Carlini  <paolo.carlini@oracle.com>
121         PR c++/58207
122         * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
124 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
126         PR c++/44613
127         * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
128         * decl.c (cp_finish_decl): Create a new BIND_EXPR before
129         instantiating a variable-sized type.
131         PR c++/21113
132         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
134 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
136         * class.c (find_abi_tags_r): Check for the return of warning
137         before emitting a note.
138         (one_inherited_ctor): Likewise.
140 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
142         * decl.c (duplicate_decls): Check for the return of permerror
143         before emitting a note.
145 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
147         * class.c (accessible_nvdtor_p): New.
148         (check_bases): Don't check base destructor here ...
149         (check_bases_and_members): ... check them here.  Trigger on
150         Wnon-virtual-dtor flag.
151         (finish_struct_1): Use accessible_nvdtor_p.
153 2014-04-01  Jason Merrill  <jason@redhat.com>
155         * pt.c (process_partial_specialization): Say "not deducible"
156         rather than "not used".  Use inform.
158         PR c++/60374
159         * pt.c (coerce_template_parms): Check that the pack expansion
160         pattern works with the first matching parameter.
162 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
164         * init.c (perform_member_init): Homogenize uninitialized
165         diagnostics.
167 2014-04-01  Jason Merrill  <jason@redhat.com>
169         PR c++/60708
170         * call.c (build_array_conv): Call complete_type.
172         PR c++/60713
173         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
174         (picflag_from_initializer): Return it.
175         (process_init_constructor): Handle it.
177         PR c++/60642
178         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
179         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
180         * pt.c (get_template_info): Handle NAMESPACE_DECL.
181         (most_general_template): Handle more kinds of template.
182         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
183         instantiations and specializations.
185 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
187         PR c++/44859
188         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
189         COMPONENT_REFs and ARRAY_REFs sooner.
191 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
193         PR c++/60626
194         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
195         usage in non-functions with pushed scope.
197 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
199         PR c++/60573
200         * name-lookup.h (cp_binding_level): New transient field defining_class_p
201         to indicate whether a scope is in the process of defining a class.
202         * semantics.c (begin_class_definition): Set defining_class_p.
203         * name-lookup.c (leave_scope): Reset defining_class_p.
204         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
205         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
206         unwinding to class-defining scope to handle the erroneous definition of
207         a generic function of an arbitrarily nested class within an enclosing
208         class.
210 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
212         PR c++/52369
213         * method.c (walk_field_subobs): Improve the diagnostic
214         locations for both REFERENCE_TYPEs and non-static const members.
215         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
216         instead of %qD to be consistent with the c++11 diagnostic.
218 2014-03-25  Jason Merrill  <jason@redhat.com>
220         PR c++/60566
221         PR c++/58678
222         * class.c (build_vtbl_initializer): Handle abstract dtors here.
223         * search.c (get_pure_virtuals): Not here.
225         PR c++/60375
226         * parser.c (cp_parser_lambda_expression): Don't parse the body of
227         a lambda in unevaluated context.
229         PR c++/60628
230         * decl.c (create_array_type_for_decl): Complain about array of auto.
232 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
234         PR c++/60331
235         * semantics.c (potential_constant_expression_1): Handle
236         DECL_EXPR.
238 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
240         PR c++/60627
241         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
242         introducing an implicit function template parameter within an explicit
243         instantiation.
245 2014-03-22  Jason Merrill  <jason@redhat.com>
247         PR c++/60574
248         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
249         to error.
251 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
253         PR c++/60384
254         * name-lookup.c (push_class_level_binding_1): Check identifier_p
255         on the name argument.
257 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
259         PR c++/60572
260         * init.c (build_zero_init_1): Ignore fields with error_mark_node
261         type.
263 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
265         PR c++/51474
266         * call.c (build_new_method_call_1): Handle pure virtuals called by
267         NSDMIs too.
269 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
271         PR c++/60390
272         * parser.c (cp_parser_member_declaration): Don't allow
273         finish_fully_implicit_template to consider friend declarations to be
274         class member templates.
275         (synthesize_implicit_template_parm): Handling winding back through class
276         scope to the class being defined in order to inject a template argument
277         list.
279         PR c++/60391
280         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
281         function scope as per cp_parser_skip_to_end_of_statement.
283 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
285         PR c++/59571
286         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
288 2014-03-14  Jason Merrill  <jason@redhat.com>
290         PR c++/60532
291         PR c++/58678
292         * search.c (get_pure_virtuals): Handle abstract dtor here.
293         (dfs_get_pure_virtuals): Not here.
295         PR c++/58678
296         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
297         abstract class as pure.
299 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
301         PR c++/60383
302         * pt.c (maybe_process_partial_specialization): Check return value
303         of check_specialization_namespace.
305 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
307         PR c++/60254
308         * semantics.c (finish_static_assert): Call cxx_constant_value only
309         if require_potential_rvalue_constant_expression returns true.
311 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
313         PR c++/60389
314         * method.c (get_inherited_ctor): New.
315         * cp-tree.h (get_inherited_ctor): Declare it.
316         * semantics.c (is_valid_constexpr_fn): Use it.
318 2014-03-10  Jason Merrill  <jason@redhat.com>
320         PR c++/60367
321         * call.c (convert_default_arg): Remove special handling for
322         CONSTRUCTOR.
324         PR c++/53492
325         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
326         when deciding whether to call push_template_decl for a member class.
327         * pt.c (push_template_decl_real): Return after wrong levels error.
329 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
331         PR c++/60033
332         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
333         lambda, remove the lambda's own template argument list prior to fetching
334         the specialization.
336         PR c++/60393
337         * parser.c (cp_parser_parameter_declaration_clause): Move generic
338         function template unwinding on error into a more general location, ...
339         (cp_parser_skip_to_end_of_statement): ... here.
341 2014-03-07  Jason Merrill  <jason@redhat.com>
343         * Make-lang.in (check_g++_parallelize): Split dg.exp.
345         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
346         we're in a trailing return type.
348         * typeck.c (comp_template_parms_position): 'auto' and
349         'decltype(auto)' are different from real template parms.
351         * parser.c (cp_parser_using_declaration): Consume the semicolon
352         after bare parameter pack error.
354         * cp-tree.h (REF_PARENTHESIZED_P): New.
355         * semantics.c (force_paren_expr): Set it.
356         * pt.c (do_auto_deduction): Check it.
357         (tsubst) [COMPONENT_REF]: Copy it.
358         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
360         * decl.c (create_array_type_for_decl): Only warn about invalid
361         C++1y VLA if flag_iso or warn_vla>0.
362         (grokdeclarator): Likewise.
363         * pt.c (tsubst): Likewise.
364         * semantics.c (finish_decltype_type): Likewise.
365         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
366         (cp_build_addr_expr_1): Likewise.
367         * init.c (build_new_1): Improve diagnostics.
369 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
371         PR c++/58609
372         * decl.c (check_initializer): Return NULL_TREE after error;
373         consistently use inform.
375 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
377         * decl.c (check_initializer): Remove dead code.
379 2014-03-06  Marek Polacek  <polacek@redhat.com>
381         PR c/60197
382         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
383         of checking tree code.
385 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
387         * parser.c (cp_lexer_set_source_position): New.
388         (cp_parser_mem_initializer): Use it.
389         (cp_parser_postfix_open_square_expression): Likewise.
390         (cp_parser_parenthesized_expression_list): Likewise.
391         (cp_parser_new_initializer): Likewise.
392         (cp_parser_jump_statement): Likewise.
393         (cp_parser_initializer): Likewise.
394         (cp_parser_functional_cast): Likewise.
396 2014-03-05  Jason Merrill  <jason@redhat.com>
398         PR c++/60409
399         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
400         dependent expression.
402         PR c++/60361
403         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
404         if re-parsing might succeed.
405         * semantics.c (finish_id_expression): Use of a parameter outside
406         the function body is a parse error.
408         * parser.c (cp_parser_mem_initializer): Set input_location
409         properly for init-list warning.
410         (cp_parser_postfix_open_square_expression): Likewise.
411         (cp_parser_parenthesized_expression_list): Likewise.
412         (cp_parser_new_initializer): Likewise.
413         (cp_parser_jump_statement): Likewise.
414         (cp_parser_initializer): Likewise.
415         (cp_parser_functional_cast): Likewise.
417 2014-03-04  Jason Merrill  <jason@redhat.com>
419         PR c++/60417
420         * typeck2.c (process_init_constructor_record): Set
421         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
423         PR c++/60415
424         PR c++/54359
425         * parser.c (cp_parser_direct_declarator): Set declarator to
426         cp_error_declarator on invalid qualified-id.
428 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
430         PR c++/60376
431         * parser.c (cp_parser_using_declaration): Early return when
432         cp_parser_nested_name_specifier errors out.
434 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
436         PR c++/60377
437         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
438         function scope on parse error in function parameter list.
440 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
442         * method.c (implicitly_declare_fn): Remove redundant
443         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
444         * semantics.c (is_instantiation_of_constexpr): Likewise.
445         * error.c (dump_function_decl): Likewise.
447 2014-03-01  Jason Merrill  <jason@redhat.com>
449         PR c++/60379
450         * semantics.c (begin_maybe_infinite_loop): Use
451         fold_non_dependent_expr_sfinae.
453 2014-02-28  Jason Merrill  <jason@redhat.com>
455         PR c++/58845
456         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
458 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
460         PR c++/58610
461         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
462         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
463         * lambda.c (maybe_add_lambda_conv_op): Likewise.
465 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
467         PR c++/60253
468         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
469         error_at.
471 2014-02-27  Jason Merrill  <jason@redhat.com>
473         PR c++/60353
474         PR c++/55877
475         * decl2.c (tentative_decl_linkage): Don't mess with functions that
476         are not yet defined.
478 2014-02-26  Jason Merrill  <jason@redhat.com>
480         PR c++/60347
481         PR lto/53808
482         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
483         * init.c (build_vtbl_address): Do it here.
485         PR c++/59231
486         PR c++/11586
487         PR c++/14710
488         PR c++/57132
489         * pt.c (struct warning_sentinel): New.
490         (tsubst_copy_and_build): Use it instead of
491         c_inhibit_evaluation_warnings.
492         * typeck.c (maybe_warn_about_useless_cast): Remove
493         c_inhibit_evaluation_warnings check.
495         PR c++/54440
496         * pt.c (get_template_parm_index): New.
497         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
498         (process_template_parm): Allow bare packs in template template
499         parm template parms.
500         (coerce_template_parameter_pack): Handle fixed template template
501         parm packs and fixed packs not at the end of the parm list.
502         (coerce_template_parms): Handle template parm packs not at the end
503         of the parm list.
504         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
506         PR c++/60182
507         * pt.c (unify): Ignore alias templates when deducing a template
508         template parameter.
510         PR c++/60345
511         Revert:
512         DR 1571
513         * call.c (reference_binding): Recurse on user-defined conversion.
514         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
516 2014-02-25  Jason Merrill  <jason@redhat.com>
518         DR 1571
519         * call.c (reference_binding): Recurse on user-defined conversion.
520         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
522         * call.c (print_conversion_rejection): Handle n_arg of -2.
523         (build_user_type_conversion_1): Pass it.
525         PR c++/55877
526         * decl2.c (no_linkage_error): Handle C++98 semantics.
527         (reset_type_linkage): Move from decl.c.
528         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
529         (bt_reset_linkage_2, reset_decl_linkage): New.
530         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
531         (cp_write_global_declarations): Move condition into no_linkage_error.
532         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
533         * semantics.c (expand_or_defer_fn_1): Factor out
534         tentative_decl_linkage.
535         * cp-tree.h: Adjust.
537         * decl2.c (finish_static_data_member_decl): Diagnose static data
538         member in unnamed class.
539         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
541         PR lto/53808
542         * class.c (clone_function_decl): Call note_vague_linkage_fn for
543         defaulted virtual dtor.
545         DR 1286
546         PR c++/60328
547         * pt.c (get_underlying_template): Fix equivalence calculation.
549 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
551         PR c++/60311
552         * parser.c (function_being_declared_is_template_p): Return false when
553         processing a template parameter list.
554         (cp_parser_parameter_declaration_clause): Don't set
555         auto_is_implicit_function_template_parm_p when processing a
556         template parameter list.
558         * parser.c (synthesize_implicit_template_parm): Inject new template
559         argument list appropriately when a generic member function
560         of a class template is declared out-of-line.
562         PR c++/60065
563         * parser.c (cp_parser_direct_declarator): Don't save and
564         restore num_template_parameter_lists around call to
565         cp_parser_parameter_declaration_list.
566         (function_being_declared_is_template_p): New predicate.
567         (cp_parser_parameter_declaration_list): Use
568         function_being_declared_is_template_p as predicate for
569         inspecting current function template parameter list length
570         rather than num_template_parameter_lists.
572 2014-02-24  Jason Merrill  <jason@redhat.com>
574         PR c++/60146
575         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
576         DECL_EXPR initialize a non-class iterator.
578         PR c++/60312
579         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
581 2014-02-21  Jason Merrill  <jason@redhat.com>
583         PR c++/58170
584         * parser.c (cp_parser_type_name): Always check dependency.
585         (cp_parser_type_specifier_seq): Call
586         cp_parser_parse_and_diagnose_invalid_type_name.
588         PR c++/60108
589         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
591         PR c++/60185
592         * parser.c (cp_parser_default_argument): Clear
593         current_class_ptr/current_class_ref like tsubst_default_argument.
595         PR c++/60252
596         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
597         than current_binding_level.
599         PR c++/60186
600         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
602         PR c++/60187
603         * parser.c (cp_parser_enum_specifier): Call
604         check_for_bare_parameter_packs.
606         PR c++/59347
607         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
608         erroneous typedef.
610         PR c++/60241
611         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
612         of the partial instantiation, not the most general template.
613         (maybe_process_partial_specialization): Reassign everything on
614         that list.
616         PR c++/60216
617         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
618         (check_explicit_specialization): Don't clone.
620         PR c++/60219
621         * pt.c (coerce_template_parms): Bail if argument packing fails.
623         PR c++/60224
624         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
625         Don't get confused by a CONSTRUCTOR that already has a type.
627         PR c++/60227
628         * call.c (build_array_conv): Don't crash on VLA.
630         PR c++/60248
631         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
633         PR c++/60252
634         * lambda.c (maybe_resolve_dummy): Don't try to capture this
635         in declaration context.
637         DR 1591
638         PR c++/60051
639         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
641         PR c++/60250
642         * parser.c (cp_parser_direct_declarator): Don't wrap a
643         type-dependent expression in a NOP_EXPR.
645         PR c++/60251
646         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
648         PR c++/60167
649         PR c++/60222
650         PR c++/58606
651         * parser.c (cp_parser_template_argument): Restore dereference.
652         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
653         (process_partial_specialization): Handle deref.
654         (unify): Likewise.
656 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
658         PR c++/60052
659         PR c++/60053
660         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
661         implicit_template_scope upon leaving an out-of-line generic member
662         function definition.
664 2014-02-20  Kai Tietz  <ktietz@redhat.com>
666         PR c++/58873
667         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
668         valued type argument as error_mark_node.
670         PR c++/58835
671         * semantics.c (finish_fname): Handle error_mark_node.
673 2014-02-19  Jason Merrill  <jason@redhat.com>
675         PR c++/60046
676         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
677         spec from template context.
679 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
681         PR debug/56563
682         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
683         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
685         PR c++/60267
686         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
688 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
690         PR c++/60225
691         * semantics.c (ensure_literal_type_for_constexpr_object): Use
692         strip_array_types.
694 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
696         PR c++/60215
697         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
698         During error recovery allow_non_constant may be false.
700 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
702         PR c++/60190
703         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
704         scope whenever a template parameter list has been started, independent
705         of whether the function call operator was well-formed or not.
707         PR c++/60064
708         * parser.c (cp_parser_member_declaration): Pop fully implicit template
709         scope for generic friend declarations as well as for non-friends.
711 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
713         PR c++/60047
714         * method.c (implicitly_declare_fn): A constructor of a class with
715         virtual base classes isn't constexpr (7.1.5p4).
717 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
719         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
721 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
723         PR c++/58703
724         * parser.c (cp_parser_omp_declare_reduction): Save and free
725         declarator_obstack.
727 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
729         PR c++/53017
730         PR c++/59211
731         * tree.c (handle_init_priority_attribute): Call default_conversion on
732         the attribute argument.
734 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
736         PR c++/58871
737         * method.c (synthesized_method_walk): If vbases is non-null but
738         is_empty is true, likewise don't worry about the virtual bases.
740 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
742         PR c++/51219
743         * typeck2.c (process_init_constructor_record): Just skip unnamed
744         bit-fields.
746 2014-01-31  Jason Merrill  <jason@redhat.com>
748         PR c++/59469
749         * pt.c (mark_decl_instantiated): Call mark_needed.
751         PR c++/58672
752         * decl2.c (handle_tls_init): Handle null init fn.
754         PR c++/55800
755         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
757 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
759         PR c++/59082
760         * class.c (build_vfield_ref): Early return error_mark_node if
761         TYPE_VFIELD (type) is null.
762         (build_base_path): Check return value of build_vfield_ref.
764 2014-01-31  Jason Merrill  <jason@redhat.com>
766         PR c++/59646
767         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
768         [ck_list]: Check for error_mark_node.
769         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
771         PR c++/57043
772         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
773         during partial ordering.
775 2014-01-31  Marek Polacek  <polacek@redhat.com>
777         PR c/59963
778         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
780 2014-01-30  Jason Merrill  <jason@redhat.com>
782         PR c++/57899
783         * cp-tree.h (struct saved_scope): Add x_local_specializations.
784         (local_specializations): New macro.
785         * pt.c (local_specializations): Remove variable.
787 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
789         PR c++/58708
790         * parser.c (make_string_pack): Use double_int::from_buffer.
792 2014-01-30  Marek Polacek  <polacek@redhat.com>
794         PR c/59940
795         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
796         input_location.
797         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
798         with input_location.
799         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
800         loc parameter.
802 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
804         PR c++/58843
805         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
807 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
809         PR c++/58649
810         * pt.c (lookup_template_class_1): Check start_enum return value
811         for error_mark_node.
813 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
815         * decl.c (duplicate_decls, typename_hash, typename_compare):
816         Use TYPE_IDENTIFIER.
817         * error.c (dump_type): Likewise.
818         * mangle.c (dump_substitution_candidates): Likewise.
820 2014-01-30  Jason Merrill  <jason@redhat.com>
822         PR c++/59633
823         * decl2.c (attributes_naming_typedef_ok): New.
824         * cp-tree.h: Declare it.
825         * decl.c (grokdeclarator): Check it.
826         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
828 2014-01-29  Jason Merrill  <jason@redhat.com>
830         PR c++/59707
831         * call.c (add_builtin_candidate): Catch dependent types.
833         PR c++/59989
834         * pt.c (expand_template_argument_pack): Correct
835         non_default_args_count calculation.
837         PR c++/58466
838         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
840         PR c++/59956
841         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
842         have a friend template in a class template.
843         * pt.c (tsubst_friend_function): Look through it.
844         (push_template_decl_real): A friend member template is
845         primary.
847 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
849         PR c++/58846
850         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
851         == error_mark_node.
853 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
855         PR c++/58674
856         * pt.c (instantiate_template_1): Check for error_mark_node the second
857         argument too.
859 2014-01-29  Jason Merrill  <jason@redhat.com>
861         PR c++/59916
862         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
863         cdtor_returns_this case.
865         PR c++/59315
866         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
868 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
870         PR c++/58702
871         * semantics.c (finish_omp_reduction_clause): Check type for
872         error_mark_node.
874 2014-01-28  Jason Merrill  <jason@redhat.com>
876         PR c++/59791
877         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
878         (tsubst_copy): Use it if lookup fails.
880         PR c++/59818
881         * pt.c (tsubst_function_type): Make sure we keep the same function
882         quals.
884         PR c++/58701
885         * semantics.c (build_anon_member_initialization): Stop walking
886         when we run out of COMPONENT_REFs.
888         PR c++/58632
889         * decl.c (lookup_and_check_tag): Ignore template parameters if
890         scope == ts_current.
891         * pt.c (check_template_shadow): Don't complain about the injected
892         class name.
894         * decl.c (duplicate_decls): Tweak.
896         PR c++/53756
897         * mangle.c (write_unqualified_name): Handle operator auto.
899 2014-01-27  Jason Merrill  <jason@redhat.com>
901         PR c++/59823
902         Core DR 1138
903         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
904         list-initialization.  A conversion to rvalue ref that involves
905         an lvalue-rvalue conversion is bad.
906         (convert_like_real): Give helpful error message.
908         PR c++/54652
909         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
911         PR c++/58504
912         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
913         types.
915         PR c++/58606
916         * pt.c (template_parm_to_arg): Call convert_from_reference.
917         (tsubst_template_arg): Don't strip reference refs.
919         PR c++/58639
920         * call.c (build_aggr_conv): Reject value-initialization of reference.
922         PR c++/58812
923         PR c++/58651
924         * call.c (convert_like_real): Give helpful error about excess braces
925         for ck_rvalue of scalar type.
927         Core DR 1288
928         * call.c (reference_binding): Only elide braces if the single
929         element is reference-related.
931         PR c++/58814
932         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
933         stabilizing.
935         PR c++/58837
936         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
937         FUNCTION_DECL.
939         PR c++/59097
940         * decl.c (compute_array_index_type): Don't call
941         maybe_constant_value for a non-integral expression.
943 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
945         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
946         flag_cilkplus.
947         * cp-gimplify.c (cp_genericize): Likewise.
948         * decl.c (grokfndecl): Likewise.
949         * parser.c (cp_parser_postfix_expression): Likewise.
950         (cp_parser_postfix_open_square_expression): Likewise.
951         (cp_parser_direct_declarator): Likewise.
952         (is_cilkplus_vector_p): Likewise.
953         (cp_parser_omp_clause_name): Likewise.
954         (cp_parser_omp_all_clauses): Likewise.
955         * pt.c (apply_late_template_attributes): Likewise.
956         * typeck.c (cp_build_array_ref): Likewise.
957         (cp_build_compound_expr): Likewise.
958         (check_return_expr): Likewise.
960 2014-01-24  Jason Merrill  <jason@redhat.com>
962         PR c++/58550
963         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
964         c++11 into error.
966         PR c++/59886
967         PR c++/59659
968         * typeck2.c (process_init_constructor_array): Don't create
969         RANGE_EXPR yet.
971 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
973         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
974         handling for RANGE_ARRAY case.
976 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
978         PR c++/57524
979         * name-lookup.c (push_using_directive): Use timevar_cond_start.
981 2014-01-23  Marek Polacek  <polacek@redhat.com>
983         PR c/59846
984         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
986 2014-01-23  Marek Polacek  <polacek@redhat.com>
988         PR c/58346
989         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
990         an empty aggregate.
992 2014-01-23  Jason Merrill  <jason@redhat.com>
994         PR c++/55189
995         * cp-tree.h (struct language_function): Add infinite_loop and
996         infinite_loops.
997         (current_function_infinite_loop): New.
998         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
999         (break_maybe_infinite_loop): New.
1000         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
1001         (finish_do_stmt, finish_for_cond, finish_for_stmt)
1002         (begin_range_for_stmt): Use them.
1003         * decl.c (finish_function): Don't warn about missing return
1004         if current_function_infinite_loop.
1005         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
1006         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
1008         * call.c (build_op_delete_call): Use make_tree_vector and
1009         release_tree_vector.
1011 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1013         PR c++/58980
1014         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
1015         nested_name_specifier.
1017 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1019         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
1020         see if there is an attribute after function decl.  If so, then
1021         parse them now.
1022         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
1023         enabled function late parsing.
1024         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
1025         attribute for a SIMD-enabled function.
1026         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
1027         the function is used by SIMD-enabled function (indicated by NULL
1028         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
1029         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
1030         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
1031         vectorlength clause in SIMD-enabled function and #pragma SIMD's
1032         vectorlength clause.  Added a new bool parameter to differentiate
1033         between the two.
1034         (cp_parser_cilk_simd_fn_vector_attrs): New function.
1035         (is_cilkplus_vector_p): Likewise.
1036         (cp_parser_late_parsing_elem_fn_info): Likewise.
1037         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
1038         and "vectorlength" clauses when Cilk Plus is enabled.
1039         (cp_parser_omp_clause_linear): Added a new parameter of type bool
1040         and emit a sorry message when step size is a parameter.
1041         * parser.h (cp_parser::cilk_simd_fn_info): New field.
1042         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
1043         flag_openmp.
1044         * pt.c (apply_late_template_attributes): Likewise.
1046 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
1048         PR middle-end/58809
1049         * semantics.c (finish_omp_reduction_clause): Reject
1050         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
1052 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1054         PR c++/59482
1055         * parser.c (cp_parser_class_head): Push the class before parsing
1056         the base-clause, pop after it.
1058 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
1060         * decl2.c (cpp_check): Revert prototype change.
1062 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1064         PR c++/59270
1065         PR c++/58811
1066         * init.c (build_value_init_noctor): Don't pass error_mark_node to
1067         build_value_init.
1069 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1071         PR c++/59269
1072         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
1073         only when errorcount == 0.
1075 2014-01-17  Marek Polacek  <polacek@redhat.com>
1077         PR c++/59838
1078         * cvt.c (ocp_convert): Don't segfault on non-existing
1079         ENUM_UNDERLYING_TYPE.
1081 2014-01-16  Jason Merrill  <jason@redhat.com>
1083         PR c++/59821
1084         * tree.c (bot_manip): Update the location of builtin_LINE and
1085         builtin_FILE calls.
1087 2014-01-14  Jason Merrill  <jason@redhat.com>
1089         PR c++/59659
1090         * typeck2.c (massage_init_elt): New.
1091         (process_init_constructor_record)
1092         (process_init_constructor_union): Use it.
1093         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
1094         (split_nonconstant_init_1): Handle it.
1095         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
1097 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1099         PR c++/59631
1100         * parser.c (cp_parser_postfix_expression): Added a new if-statement
1101         and replaced an existing if-statement with else-if statement.
1102         Changed an existing error message wording to match the one from the C
1103         parser.
1105 2014-01-08  Jason Merrill  <jason@redhat.com>
1107         PR c++/59614
1108         * class.c (abi_tag_data): Add tags field.
1109         (check_abi_tags): Initialize it.
1110         (find_abi_tags_r): Support collecting missing tags.
1111         (mark_type_abi_tags): Don't look at template args.
1112         (inherit_targ_abi_tags): New.
1113         (check_bases_and_members): Use it.
1114         * cp-tree.h (ABI_TAG_IMPLICIT): New.
1115         * mangle.c (write_abi_tags): Check it.
1117 2014-01-07  Jason Merrill  <jason@redhat.com>
1119         PR c++/58856
1120         * pt.c (num_innermost_template_parms): New.
1121         (get_underlying_template): Use it.
1123         PR c++/58965
1124         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
1126 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
1128         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1129         the letter of 20.11.6 about Base and Derived naming the same
1130         class type modulo cv-qualifiers.
1132 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
1134         PR c++/59635
1135         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1136         function as unimplemented for generic lambdas with varargs.
1138         PR c++/59636
1139         * parser.c (cp_parser_template_parameter): Early out with
1140         error_mark_node if parameter declaration was not parsed.
1142         PR c++/59629
1143         * parser.c (cp_parser_lambda_expression): Save/reset/restore
1144         auto_is_implicit_function_template_parm_p around lambda body.
1146         PR c++/59638
1147         * parser.c (cp_parser_init_declarator): Undo fully implicit
1148         template parameter list when declarator is not a function.
1150 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
1152         PR c++/58950
1153         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1155 2014-01-03  Tobias Burnus  <burnus@net-b.de>
1157         PR c++/58567
1158         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1160 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
1162         Core DR 1442
1163         PR c++/59165
1164         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1165         as include_std to perform_koenig_lookup.
1166         (cp_parser_postfix_expression): Adjust.
1167         * pt.c (tsubst_copy_and_build): Likewise.
1168         * semantics.c (perform_koenig_lookup): Remove bool parameter.
1169         (omp_reduction_lookup): Adjust.
1170         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1171         (lookup_arg_dependent): Likewise.
1172         (lookup_function_nonclass): Adjust.
1173         * name-lookup.h: Adjust declaration.
1174         * cp-tree.h: Likewise.
1176 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1178         PR c++/59087
1179         * parser.c (cp_parser_userdef_numeric_literal): Mention
1180         -fext-numeric-literals in the message.
1182 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1184         PR c++/59641
1185         * call.c (build_conditional_expr_1): Check the return value of
1186         force_rvalue.
1188 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1190         * call.c (convert_like_real): Check complain.
1192 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1194         PR c++/59378
1195         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1196         in templates.
1198 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1200         Update copyright years
1202 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1204         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1205         the standard form for the copyright notice.
1207 Copyright (C) 2014 Free Software Foundation, Inc.
1209 Copying and distribution of this file, with or without modification,
1210 are permitted in any medium without royalty provided the copyright
1211 notice and this notice are preserved.