Merged revisions 209304,209307,209332,209338-209339,209343,209346,209351,209354,20936...
[official-gcc.git] / gcc-4_9 / gcc / cp / ChangeLog
blob6f59aff4708ff48c7d8177f4593ad5e5e94a5330
1 2014-04-22  Jakub Jelinek  <jakub@redhat.com>
3         PR c/59073
4         * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
5         fails, don't set OM_PARALLEL_COMBINED and return NULL.
7 2014-04-22  Release Manager
9         * GCC 4.9.0 released.
11 2014-04-15  Jakub Jelinek  <jakub@redhat.com>
13         PR plugins/59335
14         * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
16 2014-04-10  Richard Biener  <rguenther@suse.de>
17             Jakub Jelinek  <jakub@redhat.com>
19         PR ipa/60761
20         * error.c (dump_decl) <case FUNCTION_DECL>: If
21         DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
22         recurse on DECL_ABSTRACT_ORIGIN instead of printing
23         <built-in>.
25 2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>
27         * pt.c (check_template_variable): Check for the return of pedwarn
28         before emitting a note.
29         * parser.c (cp_parser_lambda_introducer): Likewise.
31 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
33         PR c++/59115
34         * pt.c (process_template_parm): For an invalid non-type parameter
35         only set TREE_TYPE to error_mark_node.
36         (push_inline_template_parms_recursive, comp_template_parms,
37         redeclare_class_template, coerce_template_template_parm,
38         coerce_template_template_parms, unify): Use error_operand_p.
40 2014-04-08  Nathan Sidwell  <nathan@codesourcery.com>
42         * class.c (check_bases_and_members): Warn about non-virtual dtors
43         in public bases only.  Check warn_ecpp before complaining about
44         non-polymorphic bases.
46 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
48         * decl.c (duplicate_decls): Check for the return of warning_at
49         before emitting a note.
50         (warn_misplaced_attr_for_class_type): Likewise.
51         (check_tag_decl): Likewise.
53 2014-04-04  Paolo Carlini  <paolo.carlini@oracle.com>
55         PR c++/58207
56         * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
58 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
60         PR c++/44613
61         * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
62         * decl.c (cp_finish_decl): Create a new BIND_EXPR before
63         instantiating a variable-sized type.
65         PR c++/21113
66         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
68 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
70         * class.c (find_abi_tags_r): Check for the return of warning
71         before emitting a note.
72         (one_inherited_ctor): Likewise.
74 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
76         * decl.c (duplicate_decls): Check for the return of permerror
77         before emitting a note.
79 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
81         * class.c (accessible_nvdtor_p): New.
82         (check_bases): Don't check base destructor here ...
83         (check_bases_and_members): ... check them here.  Trigger on
84         Wnon-virtual-dtor flag.
85         (finish_struct_1): Use accessible_nvdtor_p.
87 2014-04-01  Jason Merrill  <jason@redhat.com>
89         * pt.c (process_partial_specialization): Say "not deducible"
90         rather than "not used".  Use inform.
92         PR c++/60374
93         * pt.c (coerce_template_parms): Check that the pack expansion
94         pattern works with the first matching parameter.
96 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
98         * init.c (perform_member_init): Homogenize uninitialized
99         diagnostics.
101 2014-04-01  Jason Merrill  <jason@redhat.com>
103         PR c++/60708
104         * call.c (build_array_conv): Call complete_type.
106         PR c++/60713
107         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
108         (picflag_from_initializer): Return it.
109         (process_init_constructor): Handle it.
111         PR c++/60642
112         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
113         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
114         * pt.c (get_template_info): Handle NAMESPACE_DECL.
115         (most_general_template): Handle more kinds of template.
116         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
117         instantiations and specializations.
119 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
121         PR c++/44859
122         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
123         COMPONENT_REFs and ARRAY_REFs sooner.
125 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
127         PR c++/60626
128         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
129         usage in non-functions with pushed scope.
131 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
133         PR c++/60573
134         * name-lookup.h (cp_binding_level): New transient field defining_class_p
135         to indicate whether a scope is in the process of defining a class.
136         * semantics.c (begin_class_definition): Set defining_class_p.
137         * name-lookup.c (leave_scope): Reset defining_class_p.
138         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
139         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
140         unwinding to class-defining scope to handle the erroneous definition of
141         a generic function of an arbitrarily nested class within an enclosing
142         class.
144 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
146         PR c++/52369
147         * method.c (walk_field_subobs): Improve the diagnostic
148         locations for both REFERENCE_TYPEs and non-static const members.
149         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
150         instead of %qD to be consistent with the c++11 diagnostic.
152 2014-03-25  Jason Merrill  <jason@redhat.com>
154         PR c++/60566
155         PR c++/58678
156         * class.c (build_vtbl_initializer): Handle abstract dtors here.
157         * search.c (get_pure_virtuals): Not here.
159         PR c++/60375
160         * parser.c (cp_parser_lambda_expression): Don't parse the body of
161         a lambda in unevaluated context.
163         PR c++/60628
164         * decl.c (create_array_type_for_decl): Complain about array of auto.
166 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
168         PR c++/60331
169         * semantics.c (potential_constant_expression_1): Handle
170         DECL_EXPR.
172 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
174         PR c++/60627
175         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
176         introducing an implicit function template parameter within an explicit
177         instantiation.
179 2014-03-22  Jason Merrill  <jason@redhat.com>
181         PR c++/60574
182         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
183         to error.
185 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
187         PR c++/60384
188         * name-lookup.c (push_class_level_binding_1): Check identifier_p
189         on the name argument.
191 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
193         PR c++/60572
194         * init.c (build_zero_init_1): Ignore fields with error_mark_node
195         type.
197 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
199         PR c++/51474
200         * call.c (build_new_method_call_1): Handle pure virtuals called by
201         NSDMIs too.
203 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
205         PR c++/60390
206         * parser.c (cp_parser_member_declaration): Don't allow
207         finish_fully_implicit_template to consider friend declarations to be
208         class member templates.
209         (synthesize_implicit_template_parm): Handling winding back through class
210         scope to the class being defined in order to inject a template argument
211         list.
213         PR c++/60391
214         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
215         function scope as per cp_parser_skip_to_end_of_statement.
217 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
219         PR c++/59571
220         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
222 2014-03-14  Jason Merrill  <jason@redhat.com>
224         PR c++/60532
225         PR c++/58678
226         * search.c (get_pure_virtuals): Handle abstract dtor here.
227         (dfs_get_pure_virtuals): Not here.
229         PR c++/58678
230         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
231         abstract class as pure.
233 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
235         PR c++/60383
236         * pt.c (maybe_process_partial_specialization): Check return value
237         of check_specialization_namespace.
239 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
241         PR c++/60254
242         * semantics.c (finish_static_assert): Call cxx_constant_value only
243         if require_potential_rvalue_constant_expression returns true.
245 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
247         PR c++/60389
248         * method.c (get_inherited_ctor): New.
249         * cp-tree.h (get_inherited_ctor): Declare it.
250         * semantics.c (is_valid_constexpr_fn): Use it.
252 2014-03-10  Jason Merrill  <jason@redhat.com>
254         PR c++/60367
255         * call.c (convert_default_arg): Remove special handling for
256         CONSTRUCTOR.
258         PR c++/53492
259         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
260         when deciding whether to call push_template_decl for a member class.
261         * pt.c (push_template_decl_real): Return after wrong levels error.
263 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
265         PR c++/60033
266         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
267         lambda, remove the lambda's own template argument list prior to fetching
268         the specialization.
270         PR c++/60393
271         * parser.c (cp_parser_parameter_declaration_clause): Move generic
272         function template unwinding on error into a more general location, ...
273         (cp_parser_skip_to_end_of_statement): ... here.
275 2014-03-07  Jason Merrill  <jason@redhat.com>
277         * Make-lang.in (check_g++_parallelize): Split dg.exp.
279         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
280         we're in a trailing return type.
282         * typeck.c (comp_template_parms_position): 'auto' and
283         'decltype(auto)' are different from real template parms.
285         * parser.c (cp_parser_using_declaration): Consume the semicolon
286         after bare parameter pack error.
288         * cp-tree.h (REF_PARENTHESIZED_P): New.
289         * semantics.c (force_paren_expr): Set it.
290         * pt.c (do_auto_deduction): Check it.
291         (tsubst) [COMPONENT_REF]: Copy it.
292         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
294         * decl.c (create_array_type_for_decl): Only warn about invalid
295         C++1y VLA if flag_iso or warn_vla>0.
296         (grokdeclarator): Likewise.
297         * pt.c (tsubst): Likewise.
298         * semantics.c (finish_decltype_type): Likewise.
299         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
300         (cp_build_addr_expr_1): Likewise.
301         * init.c (build_new_1): Improve diagnostics.
303 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
305         PR c++/58609
306         * decl.c (check_initializer): Return NULL_TREE after error;
307         consistently use inform.
309 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
311         * decl.c (check_initializer): Remove dead code.
313 2014-03-06  Marek Polacek  <polacek@redhat.com>
315         PR c/60197
316         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
317         of checking tree code.
319 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
321         * parser.c (cp_lexer_set_source_position): New.
322         (cp_parser_mem_initializer): Use it.
323         (cp_parser_postfix_open_square_expression): Likewise.
324         (cp_parser_parenthesized_expression_list): Likewise.
325         (cp_parser_new_initializer): Likewise.
326         (cp_parser_jump_statement): Likewise.
327         (cp_parser_initializer): Likewise.
328         (cp_parser_functional_cast): Likewise.
330 2014-03-05  Jason Merrill  <jason@redhat.com>
332         PR c++/60409
333         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
334         dependent expression.
336         PR c++/60361
337         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
338         if re-parsing might succeed.
339         * semantics.c (finish_id_expression): Use of a parameter outside
340         the function body is a parse error.
342         * parser.c (cp_parser_mem_initializer): Set input_location
343         properly for init-list warning.
344         (cp_parser_postfix_open_square_expression): Likewise.
345         (cp_parser_parenthesized_expression_list): Likewise.
346         (cp_parser_new_initializer): Likewise.
347         (cp_parser_jump_statement): Likewise.
348         (cp_parser_initializer): Likewise.
349         (cp_parser_functional_cast): Likewise.
351 2014-03-04  Jason Merrill  <jason@redhat.com>
353         PR c++/60417
354         * typeck2.c (process_init_constructor_record): Set
355         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
357         PR c++/60415
358         PR c++/54359
359         * parser.c (cp_parser_direct_declarator): Set declarator to
360         cp_error_declarator on invalid qualified-id.
362 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
364         PR c++/60376
365         * parser.c (cp_parser_using_declaration): Early return when
366         cp_parser_nested_name_specifier errors out.
368 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
370         PR c++/60377
371         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
372         function scope on parse error in function parameter list.
374 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
376         * method.c (implicitly_declare_fn): Remove redundant
377         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
378         * semantics.c (is_instantiation_of_constexpr): Likewise.
379         * error.c (dump_function_decl): Likewise.
381 2014-03-01  Jason Merrill  <jason@redhat.com>
383         PR c++/60379
384         * semantics.c (begin_maybe_infinite_loop): Use
385         fold_non_dependent_expr_sfinae.
387 2014-02-28  Jason Merrill  <jason@redhat.com>
389         PR c++/58845
390         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
392 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
394         PR c++/58610
395         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
396         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
397         * lambda.c (maybe_add_lambda_conv_op): Likewise.
399 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
401         PR c++/60253
402         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
403         error_at.
405 2014-02-27  Jason Merrill  <jason@redhat.com>
407         PR c++/60353
408         PR c++/55877
409         * decl2.c (tentative_decl_linkage): Don't mess with functions that
410         are not yet defined.
412 2014-02-26  Jason Merrill  <jason@redhat.com>
414         PR c++/60347
415         PR lto/53808
416         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
417         * init.c (build_vtbl_address): Do it here.
419         PR c++/59231
420         PR c++/11586
421         PR c++/14710
422         PR c++/57132
423         * pt.c (struct warning_sentinel): New.
424         (tsubst_copy_and_build): Use it instead of
425         c_inhibit_evaluation_warnings.
426         * typeck.c (maybe_warn_about_useless_cast): Remove
427         c_inhibit_evaluation_warnings check.
429         PR c++/54440
430         * pt.c (get_template_parm_index): New.
431         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
432         (process_template_parm): Allow bare packs in template template
433         parm template parms.
434         (coerce_template_parameter_pack): Handle fixed template template
435         parm packs and fixed packs not at the end of the parm list.
436         (coerce_template_parms): Handle template parm packs not at the end
437         of the parm list.
438         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
440         PR c++/60182
441         * pt.c (unify): Ignore alias templates when deducing a template
442         template parameter.
444         PR c++/60345
445         Revert:
446         DR 1571
447         * call.c (reference_binding): Recurse on user-defined conversion.
448         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
450 2014-02-25  Jason Merrill  <jason@redhat.com>
452         DR 1571
453         * call.c (reference_binding): Recurse on user-defined conversion.
454         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
456         * call.c (print_conversion_rejection): Handle n_arg of -2.
457         (build_user_type_conversion_1): Pass it.
459         PR c++/55877
460         * decl2.c (no_linkage_error): Handle C++98 semantics.
461         (reset_type_linkage): Move from decl.c.
462         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
463         (bt_reset_linkage_2, reset_decl_linkage): New.
464         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
465         (cp_write_global_declarations): Move condition into no_linkage_error.
466         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
467         * semantics.c (expand_or_defer_fn_1): Factor out
468         tentative_decl_linkage.
469         * cp-tree.h: Adjust.
471         * decl2.c (finish_static_data_member_decl): Diagnose static data
472         member in unnamed class.
473         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
475         PR lto/53808
476         * class.c (clone_function_decl): Call note_vague_linkage_fn for
477         defaulted virtual dtor.
479         DR 1286
480         PR c++/60328
481         * pt.c (get_underlying_template): Fix equivalence calculation.
483 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
485         PR c++/60311
486         * parser.c (function_being_declared_is_template_p): Return false when
487         processing a template parameter list.
488         (cp_parser_parameter_declaration_clause): Don't set
489         auto_is_implicit_function_template_parm_p when processing a
490         template parameter list.
492         * parser.c (synthesize_implicit_template_parm): Inject new template
493         argument list appropriately when a generic member function
494         of a class template is declared out-of-line.
496         PR c++/60065
497         * parser.c (cp_parser_direct_declarator): Don't save and
498         restore num_template_parameter_lists around call to
499         cp_parser_parameter_declaration_list.
500         (function_being_declared_is_template_p): New predicate.
501         (cp_parser_parameter_declaration_list): Use
502         function_being_declared_is_template_p as predicate for
503         inspecting current function template parameter list length
504         rather than num_template_parameter_lists.
506 2014-02-24  Jason Merrill  <jason@redhat.com>
508         PR c++/60146
509         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
510         DECL_EXPR initialize a non-class iterator.
512         PR c++/60312
513         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
515 2014-02-21  Jason Merrill  <jason@redhat.com>
517         PR c++/58170
518         * parser.c (cp_parser_type_name): Always check dependency.
519         (cp_parser_type_specifier_seq): Call
520         cp_parser_parse_and_diagnose_invalid_type_name.
522         PR c++/60108
523         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
525         PR c++/60185
526         * parser.c (cp_parser_default_argument): Clear
527         current_class_ptr/current_class_ref like tsubst_default_argument.
529         PR c++/60252
530         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
531         than current_binding_level.
533         PR c++/60186
534         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
536         PR c++/60187
537         * parser.c (cp_parser_enum_specifier): Call
538         check_for_bare_parameter_packs.
540         PR c++/59347
541         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
542         erroneous typedef.
544         PR c++/60241
545         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
546         of the partial instantiation, not the most general template.
547         (maybe_process_partial_specialization): Reassign everything on
548         that list.
550         PR c++/60216
551         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
552         (check_explicit_specialization): Don't clone.
554         PR c++/60219
555         * pt.c (coerce_template_parms): Bail if argument packing fails.
557         PR c++/60224
558         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
559         Don't get confused by a CONSTRUCTOR that already has a type.
561         PR c++/60227
562         * call.c (build_array_conv): Don't crash on VLA.
564         PR c++/60248
565         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
567         PR c++/60252
568         * lambda.c (maybe_resolve_dummy): Don't try to capture this
569         in declaration context.
571         DR 1591
572         PR c++/60051
573         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
575         PR c++/60250
576         * parser.c (cp_parser_direct_declarator): Don't wrap a
577         type-dependent expression in a NOP_EXPR.
579         PR c++/60251
580         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
582         PR c++/60167
583         PR c++/60222
584         PR c++/58606
585         * parser.c (cp_parser_template_argument): Restore dereference.
586         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
587         (process_partial_specialization): Handle deref.
588         (unify): Likewise.
590 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
592         PR c++/60052
593         PR c++/60053
594         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
595         implicit_template_scope upon leaving an out-of-line generic member
596         function definition.
598 2014-02-20  Kai Tietz  <ktietz@redhat.com>
600         PR c++/58873
601         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
602         valued type argument as error_mark_node.
604         PR c++/58835
605         * semantics.c (finish_fname): Handle error_mark_node.
607 2014-02-19  Jason Merrill  <jason@redhat.com>
609         PR c++/60046
610         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
611         spec from template context.
613 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
615         PR debug/56563
616         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
617         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
619         PR c++/60267
620         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
622 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
624         PR c++/60225
625         * semantics.c (ensure_literal_type_for_constexpr_object): Use
626         strip_array_types.
628 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
630         PR c++/60215
631         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
632         During error recovery allow_non_constant may be false.
634 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
636         PR c++/60190
637         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
638         scope whenever a template parameter list has been started, independent
639         of whether the function call operator was well-formed or not.
641         PR c++/60064
642         * parser.c (cp_parser_member_declaration): Pop fully implicit template
643         scope for generic friend declarations as well as for non-friends.
645 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
647         PR c++/60047
648         * method.c (implicitly_declare_fn): A constructor of a class with
649         virtual base classes isn't constexpr (7.1.5p4).
651 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
653         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
655 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
657         PR c++/58703
658         * parser.c (cp_parser_omp_declare_reduction): Save and free
659         declarator_obstack.
661 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
663         PR c++/53017
664         PR c++/59211
665         * tree.c (handle_init_priority_attribute): Call default_conversion on
666         the attribute argument.
668 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
670         PR c++/58871
671         * method.c (synthesized_method_walk): If vbases is non-null but
672         is_empty is true, likewise don't worry about the virtual bases.
674 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
676         PR c++/51219
677         * typeck2.c (process_init_constructor_record): Just skip unnamed
678         bit-fields.
680 2014-01-31  Jason Merrill  <jason@redhat.com>
682         PR c++/59469
683         * pt.c (mark_decl_instantiated): Call mark_needed.
685         PR c++/58672
686         * decl2.c (handle_tls_init): Handle null init fn.
688         PR c++/55800
689         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
691 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
693         PR c++/59082
694         * class.c (build_vfield_ref): Early return error_mark_node if
695         TYPE_VFIELD (type) is null.
696         (build_base_path): Check return value of build_vfield_ref.
698 2014-01-31  Jason Merrill  <jason@redhat.com>
700         PR c++/59646
701         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
702         [ck_list]: Check for error_mark_node.
703         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
705         PR c++/57043
706         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
707         during partial ordering.
709 2014-01-31  Marek Polacek  <polacek@redhat.com>
711         PR c/59963
712         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
714 2014-01-30  Jason Merrill  <jason@redhat.com>
716         PR c++/57899
717         * cp-tree.h (struct saved_scope): Add x_local_specializations.
718         (local_specializations): New macro.
719         * pt.c (local_specializations): Remove variable.
721 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
723         PR c++/58708
724         * parser.c (make_string_pack): Use double_int::from_buffer.
726 2014-01-30  Marek Polacek  <polacek@redhat.com>
728         PR c/59940
729         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
730         input_location.
731         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
732         with input_location.
733         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
734         loc parameter.
736 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
738         PR c++/58843
739         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
741 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
743         PR c++/58649
744         * pt.c (lookup_template_class_1): Check start_enum return value
745         for error_mark_node.
747 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
749         * decl.c (duplicate_decls, typename_hash, typename_compare):
750         Use TYPE_IDENTIFIER.
751         * error.c (dump_type): Likewise.
752         * mangle.c (dump_substitution_candidates): Likewise.
754 2014-01-30  Jason Merrill  <jason@redhat.com>
756         PR c++/59633
757         * decl2.c (attributes_naming_typedef_ok): New.
758         * cp-tree.h: Declare it.
759         * decl.c (grokdeclarator): Check it.
760         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
762 2014-01-29  Jason Merrill  <jason@redhat.com>
764         PR c++/59707
765         * call.c (add_builtin_candidate): Catch dependent types.
767         PR c++/59989
768         * pt.c (expand_template_argument_pack): Correct
769         non_default_args_count calculation.
771         PR c++/58466
772         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
774         PR c++/59956
775         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
776         have a friend template in a class template.
777         * pt.c (tsubst_friend_function): Look through it.
778         (push_template_decl_real): A friend member template is
779         primary.
781 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
783         PR c++/58846
784         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
785         == error_mark_node.
787 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
789         PR c++/58674
790         * pt.c (instantiate_template_1): Check for error_mark_node the second
791         argument too.
793 2014-01-29  Jason Merrill  <jason@redhat.com>
795         PR c++/59916
796         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
797         cdtor_returns_this case.
799         PR c++/59315
800         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
802 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
804         PR c++/58702
805         * semantics.c (finish_omp_reduction_clause): Check type for
806         error_mark_node.
808 2014-01-28  Jason Merrill  <jason@redhat.com>
810         PR c++/59791
811         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
812         (tsubst_copy): Use it if lookup fails.
814         PR c++/59818
815         * pt.c (tsubst_function_type): Make sure we keep the same function
816         quals.
818         PR c++/58701
819         * semantics.c (build_anon_member_initialization): Stop walking
820         when we run out of COMPONENT_REFs.
822         PR c++/58632
823         * decl.c (lookup_and_check_tag): Ignore template parameters if
824         scope == ts_current.
825         * pt.c (check_template_shadow): Don't complain about the injected
826         class name.
828         * decl.c (duplicate_decls): Tweak.
830         PR c++/53756
831         * mangle.c (write_unqualified_name): Handle operator auto.
833 2014-01-27  Jason Merrill  <jason@redhat.com>
835         PR c++/59823
836         Core DR 1138
837         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
838         list-initialization.  A conversion to rvalue ref that involves
839         an lvalue-rvalue conversion is bad.
840         (convert_like_real): Give helpful error message.
842         PR c++/54652
843         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
845         PR c++/58504
846         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
847         types.
849         PR c++/58606
850         * pt.c (template_parm_to_arg): Call convert_from_reference.
851         (tsubst_template_arg): Don't strip reference refs.
853         PR c++/58639
854         * call.c (build_aggr_conv): Reject value-initialization of reference.
856         PR c++/58812
857         PR c++/58651
858         * call.c (convert_like_real): Give helpful error about excess braces
859         for ck_rvalue of scalar type.
861         Core DR 1288
862         * call.c (reference_binding): Only elide braces if the single
863         element is reference-related.
865         PR c++/58814
866         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
867         stabilizing.
869         PR c++/58837
870         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
871         FUNCTION_DECL.
873         PR c++/59097
874         * decl.c (compute_array_index_type): Don't call
875         maybe_constant_value for a non-integral expression.
877 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
879         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
880         flag_cilkplus.
881         * cp-gimplify.c (cp_genericize): Likewise.
882         * decl.c (grokfndecl): Likewise.
883         * parser.c (cp_parser_postfix_expression): Likewise.
884         (cp_parser_postfix_open_square_expression): Likewise.
885         (cp_parser_direct_declarator): Likewise.
886         (is_cilkplus_vector_p): Likewise.
887         (cp_parser_omp_clause_name): Likewise.
888         (cp_parser_omp_all_clauses): Likewise.
889         * pt.c (apply_late_template_attributes): Likewise.
890         * typeck.c (cp_build_array_ref): Likewise.
891         (cp_build_compound_expr): Likewise.
892         (check_return_expr): Likewise.
894 2014-01-24  Jason Merrill  <jason@redhat.com>
896         PR c++/58550
897         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
898         c++11 into error.
900         PR c++/59886
901         PR c++/59659
902         * typeck2.c (process_init_constructor_array): Don't create
903         RANGE_EXPR yet.
905 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
907         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
908         handling for RANGE_ARRAY case.
910 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
912         PR c++/57524
913         * name-lookup.c (push_using_directive): Use timevar_cond_start.
915 2014-01-23  Marek Polacek  <polacek@redhat.com>
917         PR c/59846
918         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
920 2014-01-23  Marek Polacek  <polacek@redhat.com>
922         PR c/58346
923         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
924         an empty aggregate.
926 2014-01-23  Jason Merrill  <jason@redhat.com>
928         PR c++/55189
929         * cp-tree.h (struct language_function): Add infinite_loop and
930         infinite_loops.
931         (current_function_infinite_loop): New.
932         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
933         (break_maybe_infinite_loop): New.
934         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
935         (finish_do_stmt, finish_for_cond, finish_for_stmt)
936         (begin_range_for_stmt): Use them.
937         * decl.c (finish_function): Don't warn about missing return
938         if current_function_infinite_loop.
939         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
940         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
942         * call.c (build_op_delete_call): Use make_tree_vector and
943         release_tree_vector.
945 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
947         PR c++/58980
948         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
949         nested_name_specifier.
951 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
953         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
954         see if there is an attribute after function decl.  If so, then
955         parse them now.
956         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
957         enabled function late parsing.
958         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
959         attribute for a SIMD-enabled function.
960         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
961         the function is used by SIMD-enabled function (indicated by NULL
962         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
963         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
964         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
965         vectorlength clause in SIMD-enabled function and #pragma SIMD's
966         vectorlength clause.  Added a new bool parameter to differentiate
967         between the two.
968         (cp_parser_cilk_simd_fn_vector_attrs): New function.
969         (is_cilkplus_vector_p): Likewise.
970         (cp_parser_late_parsing_elem_fn_info): Likewise.
971         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
972         and "vectorlength" clauses when Cilk Plus is enabled.
973         (cp_parser_omp_clause_linear): Added a new parameter of type bool
974         and emit a sorry message when step size is a parameter.
975         * parser.h (cp_parser::cilk_simd_fn_info): New field.
976         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
977         flag_openmp.
978         * pt.c (apply_late_template_attributes): Likewise.
980 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
982         PR middle-end/58809
983         * semantics.c (finish_omp_reduction_clause): Reject
984         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
986 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
988         PR c++/59482
989         * parser.c (cp_parser_class_head): Push the class before parsing
990         the base-clause, pop after it.
992 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
994         * decl2.c (cpp_check): Revert prototype change.
996 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
998         PR c++/59270
999         PR c++/58811
1000         * init.c (build_value_init_noctor): Don't pass error_mark_node to
1001         build_value_init.
1003 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1005         PR c++/59269
1006         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
1007         only when errorcount == 0.
1009 2014-01-17  Marek Polacek  <polacek@redhat.com>
1011         PR c++/59838
1012         * cvt.c (ocp_convert): Don't segfault on non-existing
1013         ENUM_UNDERLYING_TYPE.
1015 2014-01-16  Jason Merrill  <jason@redhat.com>
1017         PR c++/59821
1018         * tree.c (bot_manip): Update the location of builtin_LINE and
1019         builtin_FILE calls.
1021 2014-01-14  Jason Merrill  <jason@redhat.com>
1023         PR c++/59659
1024         * typeck2.c (massage_init_elt): New.
1025         (process_init_constructor_record)
1026         (process_init_constructor_union): Use it.
1027         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
1028         (split_nonconstant_init_1): Handle it.
1029         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
1031 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
1033         PR c++/59631
1034         * parser.c (cp_parser_postfix_expression): Added a new if-statement
1035         and replaced an existing if-statement with else-if statement.
1036         Changed an existing error message wording to match the one from the C
1037         parser.
1039 2014-01-08  Jason Merrill  <jason@redhat.com>
1041         PR c++/59614
1042         * class.c (abi_tag_data): Add tags field.
1043         (check_abi_tags): Initialize it.
1044         (find_abi_tags_r): Support collecting missing tags.
1045         (mark_type_abi_tags): Don't look at template args.
1046         (inherit_targ_abi_tags): New.
1047         (check_bases_and_members): Use it.
1048         * cp-tree.h (ABI_TAG_IMPLICIT): New.
1049         * mangle.c (write_abi_tags): Check it.
1051 2014-01-07  Jason Merrill  <jason@redhat.com>
1053         PR c++/58856
1054         * pt.c (num_innermost_template_parms): New.
1055         (get_underlying_template): Use it.
1057         PR c++/58965
1058         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
1060 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
1062         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1063         the letter of 20.11.6 about Base and Derived naming the same
1064         class type modulo cv-qualifiers.
1066 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
1068         PR c++/59635
1069         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1070         function as unimplemented for generic lambdas with varargs.
1072         PR c++/59636
1073         * parser.c (cp_parser_template_parameter): Early out with
1074         error_mark_node if parameter declaration was not parsed.
1076         PR c++/59629
1077         * parser.c (cp_parser_lambda_expression): Save/reset/restore
1078         auto_is_implicit_function_template_parm_p around lambda body.
1080         PR c++/59638
1081         * parser.c (cp_parser_init_declarator): Undo fully implicit
1082         template parameter list when declarator is not a function.
1084 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
1086         PR c++/58950
1087         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1089 2014-01-03  Tobias Burnus  <burnus@net-b.de>
1091         PR c++/58567
1092         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1094 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
1096         Core DR 1442
1097         PR c++/59165
1098         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1099         as include_std to perform_koenig_lookup.
1100         (cp_parser_postfix_expression): Adjust.
1101         * pt.c (tsubst_copy_and_build): Likewise.
1102         * semantics.c (perform_koenig_lookup): Remove bool parameter.
1103         (omp_reduction_lookup): Adjust.
1104         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1105         (lookup_arg_dependent): Likewise.
1106         (lookup_function_nonclass): Adjust.
1107         * name-lookup.h: Adjust declaration.
1108         * cp-tree.h: Likewise.
1110 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1112         PR c++/59087
1113         * parser.c (cp_parser_userdef_numeric_literal): Mention
1114         -fext-numeric-literals in the message.
1116 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1118         PR c++/59641
1119         * call.c (build_conditional_expr_1): Check the return value of
1120         force_rvalue.
1122 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1124         * call.c (convert_like_real): Check complain.
1126 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1128         PR c++/59378
1129         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1130         in templates.
1132 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1134         Update copyright years
1136 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1138         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1139         the standard form for the copyright notice.
1141 Copyright (C) 2014 Free Software Foundation, Inc.
1143 Copying and distribution of this file, with or without modification,
1144 are permitted in any medium without royalty provided the copyright
1145 notice and this notice are preserved.