2014-04-15 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / cp / ChangeLog
blobeb988c031e6720bec168c54380c1d724de1efad7
1 2014-04-15  Jakub Jelinek  <jakub@redhat.com>
3         PR plugins/59335
4         * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
6 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
8         * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
10 2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>
12         * pt.c (mark_template_parm): Use template_parm_level_and_index.
14 2014-04-11  Jason Merrill  <jason@redhat.com>
16         * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
17         * parser.c: Adjust.
18         (cp_lexer_get_preprocessor_token): Always clear it.
19         (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
21         DR 1467
22         PR c++/51747
23         * decl.c (reshape_init_r): Handle a single element of class type.
25         DR 1338
26         * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
27         built-in operator new.
29 2014-04-11  Paolo Carlini  <paolo.carlini@oracle.com>
31         PR c++/58600
32         * name-lookup.c (parse_using_directive): Return early if the
33         attribs argument is error_mark_node; use get_attribute_name.
35 2014-04-11  Jason Merrill  <jason@redhat.com>
37         DR 1030
38         PR c++/51253
39         * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
40         * call.c (struct z_candidate): Add flags field.
41         (add_candidate): Add flags parm.
42         (add_function_candidate, add_conv_candidate, build_builtin_candidate)
43         (add_template_candidate_real): Pass it.
44         (build_over_call): Set CALL_EXPR_LIST_INIT_P.
45         * tree.c (build_aggr_init_expr): Copy it.
46         * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
48 2014-04-10  Richard Biener  <rguenther@suse.de>
49             Jakub Jelinek  <jakub@redhat.com>
51         PR ipa/60761
52         * error.c (dump_decl) <case FUNCTION_DECL>: If
53         DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
54         recurse on DECL_ABSTRACT_ORIGIN instead of printing
55         <built-in>.
57 2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>
59         * pt.c (check_template_variable): Check for the return of pedwarn
60         before emitting a note.
61         * parser.c (cp_parser_lambda_introducer): Likewise.
63 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
65         PR c++/59115
66         * pt.c (process_template_parm): For an invalid non-type parameter
67         only set TREE_TYPE to error_mark_node.
68         (push_inline_template_parms_recursive, comp_template_parms,
69         redeclare_class_template, coerce_template_template_parm,
70         coerce_template_template_parms, unify): Use error_operand_p.
72 2014-04-08  Nathan Sidwell  <nathan@codesourcery.com>
74         * class.c (check_bases_and_members): Warn about non-virtual dtors
75         in public bases only.  Check warn_ecpp before complaining about
76         non-polymorphic bases.
78 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
80         * decl.c (duplicate_decls): Check for the return of warning_at
81         before emitting a note.
82         (warn_misplaced_attr_for_class_type): Likewise.
83         (check_tag_decl): Likewise.
85 2014-04-04  Paolo Carlini  <paolo.carlini@oracle.com>
87         PR c++/58207
88         * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
90 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
92         PR c++/44613
93         * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
94         * decl.c (cp_finish_decl): Create a new BIND_EXPR before
95         instantiating a variable-sized type.
97         PR c++/21113
98         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
100 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
102         * class.c (find_abi_tags_r): Check for the return of warning
103         before emitting a note.
104         (one_inherited_ctor): Likewise.
106 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
108         * decl.c (duplicate_decls): Check for the return of permerror
109         before emitting a note.
111 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
113         * class.c (accessible_nvdtor_p): New.
114         (check_bases): Don't check base destructor here ...
115         (check_bases_and_members): ... check them here.  Trigger on
116         Wnon-virtual-dtor flag.
117         (finish_struct_1): Use accessible_nvdtor_p.
119 2014-04-01  Jason Merrill  <jason@redhat.com>
121         * pt.c (process_partial_specialization): Say "not deducible"
122         rather than "not used".  Use inform.
124         PR c++/60374
125         * pt.c (coerce_template_parms): Check that the pack expansion
126         pattern works with the first matching parameter.
128 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
130         * init.c (perform_member_init): Homogenize uninitialized
131         diagnostics.
133 2014-04-01  Jason Merrill  <jason@redhat.com>
135         PR c++/60708
136         * call.c (build_array_conv): Call complete_type.
138         PR c++/60713
139         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
140         (picflag_from_initializer): Return it.
141         (process_init_constructor): Handle it.
143         PR c++/60642
144         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
145         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
146         * pt.c (get_template_info): Handle NAMESPACE_DECL.
147         (most_general_template): Handle more kinds of template.
148         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
149         instantiations and specializations.
151 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
153         PR c++/44859
154         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
155         COMPONENT_REFs and ARRAY_REFs sooner.
157 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
159         PR c++/60626
160         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
161         usage in non-functions with pushed scope.
163 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
165         PR c++/60573
166         * name-lookup.h (cp_binding_level): New transient field defining_class_p
167         to indicate whether a scope is in the process of defining a class.
168         * semantics.c (begin_class_definition): Set defining_class_p.
169         * name-lookup.c (leave_scope): Reset defining_class_p.
170         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
171         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
172         unwinding to class-defining scope to handle the erroneous definition of
173         a generic function of an arbitrarily nested class within an enclosing
174         class.
176 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
178         PR c++/52369
179         * method.c (walk_field_subobs): Improve the diagnostic
180         locations for both REFERENCE_TYPEs and non-static const members.
181         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
182         instead of %qD to be consistent with the c++11 diagnostic.
184 2014-03-25  Jason Merrill  <jason@redhat.com>
186         PR c++/60566
187         PR c++/58678
188         * class.c (build_vtbl_initializer): Handle abstract dtors here.
189         * search.c (get_pure_virtuals): Not here.
191         PR c++/60375
192         * parser.c (cp_parser_lambda_expression): Don't parse the body of
193         a lambda in unevaluated context.
195         PR c++/60628
196         * decl.c (create_array_type_for_decl): Complain about array of auto.
198 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
200         PR c++/60331
201         * semantics.c (potential_constant_expression_1): Handle
202         DECL_EXPR.
204 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
206         PR c++/60627
207         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
208         introducing an implicit function template parameter within an explicit
209         instantiation.
211 2014-03-22  Jason Merrill  <jason@redhat.com>
213         PR c++/60574
214         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
215         to error.
217 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
219         PR c++/60384
220         * name-lookup.c (push_class_level_binding_1): Check identifier_p
221         on the name argument.
223 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
225         PR c++/60572
226         * init.c (build_zero_init_1): Ignore fields with error_mark_node
227         type.
229 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
231         PR c++/51474
232         * call.c (build_new_method_call_1): Handle pure virtuals called by
233         NSDMIs too.
235 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
237         PR c++/60390
238         * parser.c (cp_parser_member_declaration): Don't allow
239         finish_fully_implicit_template to consider friend declarations to be
240         class member templates.
241         (synthesize_implicit_template_parm): Handling winding back through class
242         scope to the class being defined in order to inject a template argument
243         list.
245         PR c++/60391
246         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
247         function scope as per cp_parser_skip_to_end_of_statement.
249 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
251         PR c++/59571
252         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
254 2014-03-14  Jason Merrill  <jason@redhat.com>
256         PR c++/60532
257         PR c++/58678
258         * search.c (get_pure_virtuals): Handle abstract dtor here.
259         (dfs_get_pure_virtuals): Not here.
261         PR c++/58678
262         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
263         abstract class as pure.
265 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
267         PR c++/60383
268         * pt.c (maybe_process_partial_specialization): Check return value
269         of check_specialization_namespace.
271 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
273         PR c++/60254
274         * semantics.c (finish_static_assert): Call cxx_constant_value only
275         if require_potential_rvalue_constant_expression returns true.
277 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
279         PR c++/60389
280         * method.c (get_inherited_ctor): New.
281         * cp-tree.h (get_inherited_ctor): Declare it.
282         * semantics.c (is_valid_constexpr_fn): Use it.
284 2014-03-10  Jason Merrill  <jason@redhat.com>
286         PR c++/60367
287         * call.c (convert_default_arg): Remove special handling for
288         CONSTRUCTOR.
290         PR c++/53492
291         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
292         when deciding whether to call push_template_decl for a member class.
293         * pt.c (push_template_decl_real): Return after wrong levels error.
295 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
297         PR c++/60033
298         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
299         lambda, remove the lambda's own template argument list prior to fetching
300         the specialization.
302         PR c++/60393
303         * parser.c (cp_parser_parameter_declaration_clause): Move generic
304         function template unwinding on error into a more general location, ...
305         (cp_parser_skip_to_end_of_statement): ... here.
307 2014-03-07  Jason Merrill  <jason@redhat.com>
309         * Make-lang.in (check_g++_parallelize): Split dg.exp.
311         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
312         we're in a trailing return type.
314         * typeck.c (comp_template_parms_position): 'auto' and
315         'decltype(auto)' are different from real template parms.
317         * parser.c (cp_parser_using_declaration): Consume the semicolon
318         after bare parameter pack error.
320         * cp-tree.h (REF_PARENTHESIZED_P): New.
321         * semantics.c (force_paren_expr): Set it.
322         * pt.c (do_auto_deduction): Check it.
323         (tsubst) [COMPONENT_REF]: Copy it.
324         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
326         * decl.c (create_array_type_for_decl): Only warn about invalid
327         C++1y VLA if flag_iso or warn_vla>0.
328         (grokdeclarator): Likewise.
329         * pt.c (tsubst): Likewise.
330         * semantics.c (finish_decltype_type): Likewise.
331         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
332         (cp_build_addr_expr_1): Likewise.
333         * init.c (build_new_1): Improve diagnostics.
335 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
337         PR c++/58609
338         * decl.c (check_initializer): Return NULL_TREE after error;
339         consistently use inform.
341 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
343         * decl.c (check_initializer): Remove dead code.
345 2014-03-06  Marek Polacek  <polacek@redhat.com>
347         PR c/60197
348         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
349         of checking tree code.
351 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
353         * parser.c (cp_lexer_set_source_position): New.
354         (cp_parser_mem_initializer): Use it.
355         (cp_parser_postfix_open_square_expression): Likewise.
356         (cp_parser_parenthesized_expression_list): Likewise.
357         (cp_parser_new_initializer): Likewise.
358         (cp_parser_jump_statement): Likewise.
359         (cp_parser_initializer): Likewise.
360         (cp_parser_functional_cast): Likewise.
362 2014-03-05  Jason Merrill  <jason@redhat.com>
364         PR c++/60409
365         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
366         dependent expression.
368         PR c++/60361
369         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
370         if re-parsing might succeed.
371         * semantics.c (finish_id_expression): Use of a parameter outside
372         the function body is a parse error.
374         * parser.c (cp_parser_mem_initializer): Set input_location
375         properly for init-list warning.
376         (cp_parser_postfix_open_square_expression): Likewise.
377         (cp_parser_parenthesized_expression_list): Likewise.
378         (cp_parser_new_initializer): Likewise.
379         (cp_parser_jump_statement): Likewise.
380         (cp_parser_initializer): Likewise.
381         (cp_parser_functional_cast): Likewise.
383 2014-03-04  Jason Merrill  <jason@redhat.com>
385         PR c++/60417
386         * typeck2.c (process_init_constructor_record): Set
387         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
389         PR c++/60415
390         PR c++/54359
391         * parser.c (cp_parser_direct_declarator): Set declarator to
392         cp_error_declarator on invalid qualified-id.
394 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
396         PR c++/60376
397         * parser.c (cp_parser_using_declaration): Early return when
398         cp_parser_nested_name_specifier errors out.
400 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
402         PR c++/60377
403         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
404         function scope on parse error in function parameter list.
406 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
408         * method.c (implicitly_declare_fn): Remove redundant
409         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
410         * semantics.c (is_instantiation_of_constexpr): Likewise.
411         * error.c (dump_function_decl): Likewise.
413 2014-03-01  Jason Merrill  <jason@redhat.com>
415         PR c++/60379
416         * semantics.c (begin_maybe_infinite_loop): Use
417         fold_non_dependent_expr_sfinae.
419 2014-02-28  Jason Merrill  <jason@redhat.com>
421         PR c++/58845
422         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
424 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
426         PR c++/58610
427         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
428         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
429         * lambda.c (maybe_add_lambda_conv_op): Likewise.
431 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
433         PR c++/60253
434         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
435         error_at.
437 2014-02-27  Jason Merrill  <jason@redhat.com>
439         PR c++/60353
440         PR c++/55877
441         * decl2.c (tentative_decl_linkage): Don't mess with functions that
442         are not yet defined.
444 2014-02-26  Jason Merrill  <jason@redhat.com>
446         PR c++/60347
447         PR lto/53808
448         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
449         * init.c (build_vtbl_address): Do it here.
451         PR c++/59231
452         PR c++/11586
453         PR c++/14710
454         PR c++/57132
455         * pt.c (struct warning_sentinel): New.
456         (tsubst_copy_and_build): Use it instead of
457         c_inhibit_evaluation_warnings.
458         * typeck.c (maybe_warn_about_useless_cast): Remove
459         c_inhibit_evaluation_warnings check.
461         PR c++/54440
462         * pt.c (get_template_parm_index): New.
463         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
464         (process_template_parm): Allow bare packs in template template
465         parm template parms.
466         (coerce_template_parameter_pack): Handle fixed template template
467         parm packs and fixed packs not at the end of the parm list.
468         (coerce_template_parms): Handle template parm packs not at the end
469         of the parm list.
470         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
472         PR c++/60182
473         * pt.c (unify): Ignore alias templates when deducing a template
474         template parameter.
476         PR c++/60345
477         Revert:
478         DR 1571
479         * call.c (reference_binding): Recurse on user-defined conversion.
480         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
482 2014-02-25  Jason Merrill  <jason@redhat.com>
484         DR 1571
485         * call.c (reference_binding): Recurse on user-defined conversion.
486         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
488         * call.c (print_conversion_rejection): Handle n_arg of -2.
489         (build_user_type_conversion_1): Pass it.
491         PR c++/55877
492         * decl2.c (no_linkage_error): Handle C++98 semantics.
493         (reset_type_linkage): Move from decl.c.
494         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
495         (bt_reset_linkage_2, reset_decl_linkage): New.
496         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
497         (cp_write_global_declarations): Move condition into no_linkage_error.
498         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
499         * semantics.c (expand_or_defer_fn_1): Factor out
500         tentative_decl_linkage.
501         * cp-tree.h: Adjust.
503         * decl2.c (finish_static_data_member_decl): Diagnose static data
504         member in unnamed class.
505         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
507         PR lto/53808
508         * class.c (clone_function_decl): Call note_vague_linkage_fn for
509         defaulted virtual dtor.
511         DR 1286
512         PR c++/60328
513         * pt.c (get_underlying_template): Fix equivalence calculation.
515 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
517         PR c++/60311
518         * parser.c (function_being_declared_is_template_p): Return false when
519         processing a template parameter list.
520         (cp_parser_parameter_declaration_clause): Don't set
521         auto_is_implicit_function_template_parm_p when processing a
522         template parameter list.
524         * parser.c (synthesize_implicit_template_parm): Inject new template
525         argument list appropriately when a generic member function
526         of a class template is declared out-of-line.
528         PR c++/60065
529         * parser.c (cp_parser_direct_declarator): Don't save and
530         restore num_template_parameter_lists around call to
531         cp_parser_parameter_declaration_list.
532         (function_being_declared_is_template_p): New predicate.
533         (cp_parser_parameter_declaration_list): Use
534         function_being_declared_is_template_p as predicate for
535         inspecting current function template parameter list length
536         rather than num_template_parameter_lists.
538 2014-02-24  Jason Merrill  <jason@redhat.com>
540         PR c++/60146
541         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
542         DECL_EXPR initialize a non-class iterator.
544         PR c++/60312
545         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
547 2014-02-21  Jason Merrill  <jason@redhat.com>
549         PR c++/58170
550         * parser.c (cp_parser_type_name): Always check dependency.
551         (cp_parser_type_specifier_seq): Call
552         cp_parser_parse_and_diagnose_invalid_type_name.
554         PR c++/60108
555         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
557         PR c++/60185
558         * parser.c (cp_parser_default_argument): Clear
559         current_class_ptr/current_class_ref like tsubst_default_argument.
561         PR c++/60252
562         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
563         than current_binding_level.
565         PR c++/60186
566         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
568         PR c++/60187
569         * parser.c (cp_parser_enum_specifier): Call
570         check_for_bare_parameter_packs.
572         PR c++/59347
573         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
574         erroneous typedef.
576         PR c++/60241
577         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
578         of the partial instantiation, not the most general template.
579         (maybe_process_partial_specialization): Reassign everything on
580         that list.
582         PR c++/60216
583         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
584         (check_explicit_specialization): Don't clone.
586         PR c++/60219
587         * pt.c (coerce_template_parms): Bail if argument packing fails.
589         PR c++/60224
590         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
591         Don't get confused by a CONSTRUCTOR that already has a type.
593         PR c++/60227
594         * call.c (build_array_conv): Don't crash on VLA.
596         PR c++/60248
597         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
599         PR c++/60252
600         * lambda.c (maybe_resolve_dummy): Don't try to capture this
601         in declaration context.
603         DR 1591
604         PR c++/60051
605         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
607         PR c++/60250
608         * parser.c (cp_parser_direct_declarator): Don't wrap a
609         type-dependent expression in a NOP_EXPR.
611         PR c++/60251
612         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
614         PR c++/60167
615         PR c++/60222
616         PR c++/58606
617         * parser.c (cp_parser_template_argument): Restore dereference.
618         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
619         (process_partial_specialization): Handle deref.
620         (unify): Likewise.
622 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
624         PR c++/60052
625         PR c++/60053
626         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
627         implicit_template_scope upon leaving an out-of-line generic member
628         function definition.
630 2014-02-20  Kai Tietz  <ktietz@redhat.com>
632         PR c++/58873
633         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
634         valued type argument as error_mark_node.
636         PR c++/58835
637         * semantics.c (finish_fname): Handle error_mark_node.
639 2014-02-19  Jason Merrill  <jason@redhat.com>
641         PR c++/60046
642         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
643         spec from template context.
645 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
647         PR debug/56563
648         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
649         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
651         PR c++/60267
652         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
654 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
656         PR c++/60225
657         * semantics.c (ensure_literal_type_for_constexpr_object): Use
658         strip_array_types.
660 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
662         PR c++/60215
663         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
664         During error recovery allow_non_constant may be false.
666 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
668         PR c++/60190
669         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
670         scope whenever a template parameter list has been started, independent
671         of whether the function call operator was well-formed or not.
673         PR c++/60064
674         * parser.c (cp_parser_member_declaration): Pop fully implicit template
675         scope for generic friend declarations as well as for non-friends.
677 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
679         PR c++/60047
680         * method.c (implicitly_declare_fn): A constructor of a class with
681         virtual base classes isn't constexpr (7.1.5p4).
683 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
685         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
687 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
689         PR c++/58703
690         * parser.c (cp_parser_omp_declare_reduction): Save and free
691         declarator_obstack.
693 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
695         PR c++/53017
696         PR c++/59211
697         * tree.c (handle_init_priority_attribute): Call default_conversion on
698         the attribute argument.
700 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
702         PR c++/58871
703         * method.c (synthesized_method_walk): If vbases is non-null but
704         is_empty is true, likewise don't worry about the virtual bases.
706 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
708         PR c++/51219
709         * typeck2.c (process_init_constructor_record): Just skip unnamed
710         bit-fields.
712 2014-01-31  Jason Merrill  <jason@redhat.com>
714         PR c++/59469
715         * pt.c (mark_decl_instantiated): Call mark_needed.
717         PR c++/58672
718         * decl2.c (handle_tls_init): Handle null init fn.
720         PR c++/55800
721         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
723 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
725         PR c++/59082
726         * class.c (build_vfield_ref): Early return error_mark_node if
727         TYPE_VFIELD (type) is null.
728         (build_base_path): Check return value of build_vfield_ref.
730 2014-01-31  Jason Merrill  <jason@redhat.com>
732         PR c++/59646
733         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
734         [ck_list]: Check for error_mark_node.
735         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
737         PR c++/57043
738         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
739         during partial ordering.
741 2014-01-31  Marek Polacek  <polacek@redhat.com>
743         PR c/59963
744         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
746 2014-01-30  Jason Merrill  <jason@redhat.com>
748         PR c++/57899
749         * cp-tree.h (struct saved_scope): Add x_local_specializations.
750         (local_specializations): New macro.
751         * pt.c (local_specializations): Remove variable.
753 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
755         PR c++/58708
756         * parser.c (make_string_pack): Use double_int::from_buffer.
758 2014-01-30  Marek Polacek  <polacek@redhat.com>
760         PR c/59940
761         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
762         input_location.
763         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
764         with input_location.
765         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
766         loc parameter.
768 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
770         PR c++/58843
771         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
773 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
775         PR c++/58649
776         * pt.c (lookup_template_class_1): Check start_enum return value
777         for error_mark_node.
779 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
781         * decl.c (duplicate_decls, typename_hash, typename_compare):
782         Use TYPE_IDENTIFIER.
783         * error.c (dump_type): Likewise.
784         * mangle.c (dump_substitution_candidates): Likewise.
786 2014-01-30  Jason Merrill  <jason@redhat.com>
788         PR c++/59633
789         * decl2.c (attributes_naming_typedef_ok): New.
790         * cp-tree.h: Declare it.
791         * decl.c (grokdeclarator): Check it.
792         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
794 2014-01-29  Jason Merrill  <jason@redhat.com>
796         PR c++/59707
797         * call.c (add_builtin_candidate): Catch dependent types.
799         PR c++/59989
800         * pt.c (expand_template_argument_pack): Correct
801         non_default_args_count calculation.
803         PR c++/58466
804         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
806         PR c++/59956
807         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
808         have a friend template in a class template.
809         * pt.c (tsubst_friend_function): Look through it.
810         (push_template_decl_real): A friend member template is
811         primary.
813 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
815         PR c++/58846
816         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
817         == error_mark_node.
819 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
821         PR c++/58674
822         * pt.c (instantiate_template_1): Check for error_mark_node the second
823         argument too.
825 2014-01-29  Jason Merrill  <jason@redhat.com>
827         PR c++/59916
828         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
829         cdtor_returns_this case.
831         PR c++/59315
832         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
834 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
836         PR c++/58702
837         * semantics.c (finish_omp_reduction_clause): Check type for
838         error_mark_node.
840 2014-01-28  Jason Merrill  <jason@redhat.com>
842         PR c++/59791
843         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
844         (tsubst_copy): Use it if lookup fails.
846         PR c++/59818
847         * pt.c (tsubst_function_type): Make sure we keep the same function
848         quals.
850         PR c++/58701
851         * semantics.c (build_anon_member_initialization): Stop walking
852         when we run out of COMPONENT_REFs.
854         PR c++/58632
855         * decl.c (lookup_and_check_tag): Ignore template parameters if
856         scope == ts_current.
857         * pt.c (check_template_shadow): Don't complain about the injected
858         class name.
860         * decl.c (duplicate_decls): Tweak.
862         PR c++/53756
863         * mangle.c (write_unqualified_name): Handle operator auto.
865 2014-01-27  Jason Merrill  <jason@redhat.com>
867         PR c++/59823
868         Core DR 1138
869         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
870         list-initialization.  A conversion to rvalue ref that involves
871         an lvalue-rvalue conversion is bad.
872         (convert_like_real): Give helpful error message.
874         PR c++/54652
875         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
877         PR c++/58504
878         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
879         types.
881         PR c++/58606
882         * pt.c (template_parm_to_arg): Call convert_from_reference.
883         (tsubst_template_arg): Don't strip reference refs.
885         PR c++/58639
886         * call.c (build_aggr_conv): Reject value-initialization of reference.
888         PR c++/58812
889         PR c++/58651
890         * call.c (convert_like_real): Give helpful error about excess braces
891         for ck_rvalue of scalar type.
893         Core DR 1288
894         * call.c (reference_binding): Only elide braces if the single
895         element is reference-related.
897         PR c++/58814
898         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
899         stabilizing.
901         PR c++/58837
902         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
903         FUNCTION_DECL.
905         PR c++/59097
906         * decl.c (compute_array_index_type): Don't call
907         maybe_constant_value for a non-integral expression.
909 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
911         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
912         flag_cilkplus.
913         * cp-gimplify.c (cp_genericize): Likewise.
914         * decl.c (grokfndecl): Likewise.
915         * parser.c (cp_parser_postfix_expression): Likewise.
916         (cp_parser_postfix_open_square_expression): Likewise.
917         (cp_parser_direct_declarator): Likewise.
918         (is_cilkplus_vector_p): Likewise.
919         (cp_parser_omp_clause_name): Likewise.
920         (cp_parser_omp_all_clauses): Likewise.
921         * pt.c (apply_late_template_attributes): Likewise.
922         * typeck.c (cp_build_array_ref): Likewise.
923         (cp_build_compound_expr): Likewise.
924         (check_return_expr): Likewise.
926 2014-01-24  Jason Merrill  <jason@redhat.com>
928         PR c++/58550
929         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
930         c++11 into error.
932         PR c++/59886
933         PR c++/59659
934         * typeck2.c (process_init_constructor_array): Don't create
935         RANGE_EXPR yet.
937 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
939         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
940         handling for RANGE_ARRAY case.
942 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
944         PR c++/57524
945         * name-lookup.c (push_using_directive): Use timevar_cond_start.
947 2014-01-23  Marek Polacek  <polacek@redhat.com>
949         PR c/59846
950         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
952 2014-01-23  Marek Polacek  <polacek@redhat.com>
954         PR c/58346
955         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
956         an empty aggregate.
958 2014-01-23  Jason Merrill  <jason@redhat.com>
960         PR c++/55189
961         * cp-tree.h (struct language_function): Add infinite_loop and
962         infinite_loops.
963         (current_function_infinite_loop): New.
964         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
965         (break_maybe_infinite_loop): New.
966         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
967         (finish_do_stmt, finish_for_cond, finish_for_stmt)
968         (begin_range_for_stmt): Use them.
969         * decl.c (finish_function): Don't warn about missing return
970         if current_function_infinite_loop.
971         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
972         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
974         * call.c (build_op_delete_call): Use make_tree_vector and
975         release_tree_vector.
977 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
979         PR c++/58980
980         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
981         nested_name_specifier.
983 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
985         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
986         see if there is an attribute after function decl.  If so, then
987         parse them now.
988         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
989         enabled function late parsing.
990         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
991         attribute for a SIMD-enabled function.
992         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
993         the function is used by SIMD-enabled function (indicated by NULL
994         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
995         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
996         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
997         vectorlength clause in SIMD-enabled function and #pragma SIMD's
998         vectorlength clause.  Added a new bool parameter to differentiate
999         between the two.
1000         (cp_parser_cilk_simd_fn_vector_attrs): New function.
1001         (is_cilkplus_vector_p): Likewise.
1002         (cp_parser_late_parsing_elem_fn_info): Likewise.
1003         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
1004         and "vectorlength" clauses when Cilk Plus is enabled.
1005         (cp_parser_omp_clause_linear): Added a new parameter of type bool
1006         and emit a sorry message when step size is a parameter.
1007         * parser.h (cp_parser::cilk_simd_fn_info): New field.
1008         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
1009         flag_openmp.
1010         * pt.c (apply_late_template_attributes): Likewise.
1012 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
1014         PR middle-end/58809
1015         * semantics.c (finish_omp_reduction_clause): Reject
1016         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
1018 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1020         PR c++/59482
1021         * parser.c (cp_parser_class_head): Push the class before parsing
1022         the base-clause, pop after it.
1024 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
1026         * decl2.c (cpp_check): Revert prototype change.
1028 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1030         PR c++/59270
1031         PR c++/58811
1032         * init.c (build_value_init_noctor): Don't pass error_mark_node to
1033         build_value_init.
1035 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1037         PR c++/59269
1038         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
1039         only when errorcount == 0.
1041 2014-01-17  Marek Polacek  <polacek@redhat.com>
1043         PR c++/59838
1044         * cvt.c (ocp_convert): Don't segfault on non-existing
1045         ENUM_UNDERLYING_TYPE.
1047 2014-01-16  Jason Merrill  <jason@redhat.com>
1049         PR c++/59821
1050         * tree.c (bot_manip): Update the location of builtin_LINE and
1051         builtin_FILE calls.
1053 2014-01-14  Jason Merrill  <jason@redhat.com>
1055         PR c++/59659
1056         * typeck2.c (massage_init_elt): New.
1057         (process_init_constructor_record)
1058         (process_init_constructor_union): Use it.
1059         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
1060         (split_nonconstant_init_1): Handle it.
1061         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
1063 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1065         PR c++/59631
1066         * parser.c (cp_parser_postfix_expression): Added a new if-statement
1067         and replaced an existing if-statement with else-if statement.
1068         Changed an existing error message wording to match the one from the C
1069         parser.
1071 2014-01-08  Jason Merrill  <jason@redhat.com>
1073         PR c++/59614
1074         * class.c (abi_tag_data): Add tags field.
1075         (check_abi_tags): Initialize it.
1076         (find_abi_tags_r): Support collecting missing tags.
1077         (mark_type_abi_tags): Don't look at template args.
1078         (inherit_targ_abi_tags): New.
1079         (check_bases_and_members): Use it.
1080         * cp-tree.h (ABI_TAG_IMPLICIT): New.
1081         * mangle.c (write_abi_tags): Check it.
1083 2014-01-07  Jason Merrill  <jason@redhat.com>
1085         PR c++/58856
1086         * pt.c (num_innermost_template_parms): New.
1087         (get_underlying_template): Use it.
1089         PR c++/58965
1090         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
1092 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
1094         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1095         the letter of 20.11.6 about Base and Derived naming the same
1096         class type modulo cv-qualifiers.
1098 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
1100         PR c++/59635
1101         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1102         function as unimplemented for generic lambdas with varargs.
1104         PR c++/59636
1105         * parser.c (cp_parser_template_parameter): Early out with
1106         error_mark_node if parameter declaration was not parsed.
1108         PR c++/59629
1109         * parser.c (cp_parser_lambda_expression): Save/reset/restore
1110         auto_is_implicit_function_template_parm_p around lambda body.
1112         PR c++/59638
1113         * parser.c (cp_parser_init_declarator): Undo fully implicit
1114         template parameter list when declarator is not a function.
1116 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
1118         PR c++/58950
1119         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1121 2014-01-03  Tobias Burnus  <burnus@net-b.de>
1123         PR c++/58567
1124         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1126 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
1128         Core DR 1442
1129         PR c++/59165
1130         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1131         as include_std to perform_koenig_lookup.
1132         (cp_parser_postfix_expression): Adjust.
1133         * pt.c (tsubst_copy_and_build): Likewise.
1134         * semantics.c (perform_koenig_lookup): Remove bool parameter.
1135         (omp_reduction_lookup): Adjust.
1136         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1137         (lookup_arg_dependent): Likewise.
1138         (lookup_function_nonclass): Adjust.
1139         * name-lookup.h: Adjust declaration.
1140         * cp-tree.h: Likewise.
1142 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1144         PR c++/59087
1145         * parser.c (cp_parser_userdef_numeric_literal): Mention
1146         -fext-numeric-literals in the message.
1148 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1150         PR c++/59641
1151         * call.c (build_conditional_expr_1): Check the return value of
1152         force_rvalue.
1154 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1156         * call.c (convert_like_real): Check complain.
1158 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1160         PR c++/59378
1161         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1162         in templates.
1164 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1166         Update copyright years
1168 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1170         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1171         the standard form for the copyright notice.
1173 Copyright (C) 2014 Free Software Foundation, Inc.
1175 Copying and distribution of this file, with or without modification,
1176 are permitted in any medium without royalty provided the copyright
1177 notice and this notice are preserved.