re PR c++/21113 (Jumps into VLA or VM scope not rejected for C++)
[official-gcc.git] / gcc / cp / ChangeLog
blob615db3fa3e4d44c0cfc27ac1968d318a9e919d9b
1 2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>
3         PR c++/21113
4         * decl.c (decl_jump_unsafe): Consider variably-modified decls.
6 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
8         * class.c (find_abi_tags_r): Check for the return of warning
9         before emitting a note.
10         (one_inherited_ctor): Likewise.
12 2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>
14         * decl.c (duplicate_decls): Check for the return of permerror
15         before emitting a note.
17 2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>
19         * class.c (accessible_nvdtor_p): New.
20         (check_bases): Don't check base destructor here ...
21         (check_bases_and_members): ... check them here.  Trigger on
22         Wnon-virtual-dtor flag.
23         (finish_struct_1): Use accessible_nvdtor_p.
25 2014-04-01  Jason Merrill  <jason@redhat.com>
27         * pt.c (process_partial_specialization): Say "not deducible"
28         rather than "not used".  Use inform.
30         PR c++/60374
31         * pt.c (coerce_template_parms): Check that the pack expansion
32         pattern works with the first matching parameter.
34 2014-04-01  Fabien Chêne  <fabien@gcc.gnu.org>
36         * init.c (perform_member_init): Homogenize uninitialized
37         diagnostics.
39 2014-04-01  Jason Merrill  <jason@redhat.com>
41         PR c++/60708
42         * call.c (build_array_conv): Call complete_type.
44         PR c++/60713
45         * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
46         (picflag_from_initializer): Return it.
47         (process_init_constructor): Handle it.
49         PR c++/60642
50         * decl2.c (is_late_template_attribute): Don't defer abi_tag.
51         * mangle.c (write_unqualified_name): Fix abi_tag on templates.
52         * pt.c (get_template_info): Handle NAMESPACE_DECL.
53         (most_general_template): Handle more kinds of template.
54         * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
55         instantiations and specializations.
57 2014-03-31  Patrick Palka  <patrick@parcs.ath.cx>
59         PR c++/44859
60         * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
61         COMPONENT_REFs and ARRAY_REFs sooner.
63 2014-03-29  Adam Butcher  <adam@jessamine.co.uk>
65         PR c++/60626
66         * parser.c (cp_parser_init_declarator): Handle erroneous generic type
67         usage in non-functions with pushed scope.
69 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
71         PR c++/60573
72         * name-lookup.h (cp_binding_level): New transient field defining_class_p
73         to indicate whether a scope is in the process of defining a class.
74         * semantics.c (begin_class_definition): Set defining_class_p.
75         * name-lookup.c (leave_scope): Reset defining_class_p.
76         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
77         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
78         unwinding to class-defining scope to handle the erroneous definition of
79         a generic function of an arbitrarily nested class within an enclosing
80         class.
82 2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>
84         PR c++/52369
85         * method.c (walk_field_subobs): Improve the diagnostic
86         locations for both REFERENCE_TYPEs and non-static const members.
87         * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
88         instead of %qD to be consistent with the c++11 diagnostic.
90 2014-03-25  Jason Merrill  <jason@redhat.com>
92         PR c++/60566
93         PR c++/58678
94         * class.c (build_vtbl_initializer): Handle abstract dtors here.
95         * search.c (get_pure_virtuals): Not here.
97         PR c++/60375
98         * parser.c (cp_parser_lambda_expression): Don't parse the body of
99         a lambda in unevaluated context.
101         PR c++/60628
102         * decl.c (create_array_type_for_decl): Complain about array of auto.
104 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
106         PR c++/60331
107         * semantics.c (potential_constant_expression_1): Handle
108         DECL_EXPR.
110 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
112         PR c++/60627
113         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
114         introducing an implicit function template parameter within an explicit
115         instantiation.
117 2014-03-22  Jason Merrill  <jason@redhat.com>
119         PR c++/60574
120         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
121         to error.
123 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
125         PR c++/60384
126         * name-lookup.c (push_class_level_binding_1): Check identifier_p
127         on the name argument.
129 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
131         PR c++/60572
132         * init.c (build_zero_init_1): Ignore fields with error_mark_node
133         type.
135 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
137         PR c++/51474
138         * call.c (build_new_method_call_1): Handle pure virtuals called by
139         NSDMIs too.
141 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
143         PR c++/60390
144         * parser.c (cp_parser_member_declaration): Don't allow
145         finish_fully_implicit_template to consider friend declarations to be
146         class member templates.
147         (synthesize_implicit_template_parm): Handling winding back through class
148         scope to the class being defined in order to inject a template argument
149         list.
151         PR c++/60391
152         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
153         function scope as per cp_parser_skip_to_end_of_statement.
155 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
157         PR c++/59571
158         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
160 2014-03-14  Jason Merrill  <jason@redhat.com>
162         PR c++/60532
163         PR c++/58678
164         * search.c (get_pure_virtuals): Handle abstract dtor here.
165         (dfs_get_pure_virtuals): Not here.
167         PR c++/58678
168         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
169         abstract class as pure.
171 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
173         PR c++/60383
174         * pt.c (maybe_process_partial_specialization): Check return value
175         of check_specialization_namespace.
177 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
179         PR c++/60254
180         * semantics.c (finish_static_assert): Call cxx_constant_value only
181         if require_potential_rvalue_constant_expression returns true.
183 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
185         PR c++/60389
186         * method.c (get_inherited_ctor): New.
187         * cp-tree.h (get_inherited_ctor): Declare it.
188         * semantics.c (is_valid_constexpr_fn): Use it.
190 2014-03-10  Jason Merrill  <jason@redhat.com>
192         PR c++/60367
193         * call.c (convert_default_arg): Remove special handling for
194         CONSTRUCTOR.
196         PR c++/53492
197         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
198         when deciding whether to call push_template_decl for a member class.
199         * pt.c (push_template_decl_real): Return after wrong levels error.
201 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
203         PR c++/60033
204         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
205         lambda, remove the lambda's own template argument list prior to fetching
206         the specialization.
208         PR c++/60393
209         * parser.c (cp_parser_parameter_declaration_clause): Move generic
210         function template unwinding on error into a more general location, ...
211         (cp_parser_skip_to_end_of_statement): ... here.
213 2014-03-07  Jason Merrill  <jason@redhat.com>
215         * Make-lang.in (check_g++_parallelize): Split dg.exp.
217         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
218         we're in a trailing return type.
220         * typeck.c (comp_template_parms_position): 'auto' and
221         'decltype(auto)' are different from real template parms.
223         * parser.c (cp_parser_using_declaration): Consume the semicolon
224         after bare parameter pack error.
226         * cp-tree.h (REF_PARENTHESIZED_P): New.
227         * semantics.c (force_paren_expr): Set it.
228         * pt.c (do_auto_deduction): Check it.
229         (tsubst) [COMPONENT_REF]: Copy it.
230         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
232         * decl.c (create_array_type_for_decl): Only warn about invalid
233         C++1y VLA if flag_iso or warn_vla>0.
234         (grokdeclarator): Likewise.
235         * pt.c (tsubst): Likewise.
236         * semantics.c (finish_decltype_type): Likewise.
237         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
238         (cp_build_addr_expr_1): Likewise.
239         * init.c (build_new_1): Improve diagnostics.
241 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
243         PR c++/58609
244         * decl.c (check_initializer): Return NULL_TREE after error;
245         consistently use inform.
247 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
249         * decl.c (check_initializer): Remove dead code.
251 2014-03-06  Marek Polacek  <polacek@redhat.com>
253         PR c/60197
254         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
255         of checking tree code.
257 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
259         * parser.c (cp_lexer_set_source_position): New.
260         (cp_parser_mem_initializer): Use it.
261         (cp_parser_postfix_open_square_expression): Likewise.
262         (cp_parser_parenthesized_expression_list): Likewise.
263         (cp_parser_new_initializer): Likewise.
264         (cp_parser_jump_statement): Likewise.
265         (cp_parser_initializer): Likewise.
266         (cp_parser_functional_cast): Likewise.
268 2014-03-05  Jason Merrill  <jason@redhat.com>
270         PR c++/60409
271         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
272         dependent expression.
274         PR c++/60361
275         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
276         if re-parsing might succeed.
277         * semantics.c (finish_id_expression): Use of a parameter outside
278         the function body is a parse error.
280         * parser.c (cp_parser_mem_initializer): Set input_location
281         properly for init-list warning.
282         (cp_parser_postfix_open_square_expression): Likewise.
283         (cp_parser_parenthesized_expression_list): Likewise.
284         (cp_parser_new_initializer): Likewise.
285         (cp_parser_jump_statement): Likewise.
286         (cp_parser_initializer): Likewise.
287         (cp_parser_functional_cast): Likewise.
289 2014-03-04  Jason Merrill  <jason@redhat.com>
291         PR c++/60417
292         * typeck2.c (process_init_constructor_record): Set
293         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
295         PR c++/60415
296         PR c++/54359
297         * parser.c (cp_parser_direct_declarator): Set declarator to
298         cp_error_declarator on invalid qualified-id.
300 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
302         PR c++/60376
303         * parser.c (cp_parser_using_declaration): Early return when
304         cp_parser_nested_name_specifier errors out.
306 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
308         PR c++/60377
309         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
310         function scope on parse error in function parameter list.
312 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
314         * method.c (implicitly_declare_fn): Remove redundant
315         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
316         * semantics.c (is_instantiation_of_constexpr): Likewise.
317         * error.c (dump_function_decl): Likewise.
319 2014-03-01  Jason Merrill  <jason@redhat.com>
321         PR c++/60379
322         * semantics.c (begin_maybe_infinite_loop): Use
323         fold_non_dependent_expr_sfinae.
325 2014-02-28  Jason Merrill  <jason@redhat.com>
327         PR c++/58845
328         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
330 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
332         PR c++/58610
333         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
334         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
335         * lambda.c (maybe_add_lambda_conv_op): Likewise.
337 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
339         PR c++/60253
340         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
341         error_at.
343 2014-02-27  Jason Merrill  <jason@redhat.com>
345         PR c++/60353
346         PR c++/55877
347         * decl2.c (tentative_decl_linkage): Don't mess with functions that
348         are not yet defined.
350 2014-02-26  Jason Merrill  <jason@redhat.com>
352         PR c++/60347
353         PR lto/53808
354         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
355         * init.c (build_vtbl_address): Do it here.
357         PR c++/59231
358         PR c++/11586
359         PR c++/14710
360         PR c++/57132
361         * pt.c (struct warning_sentinel): New.
362         (tsubst_copy_and_build): Use it instead of
363         c_inhibit_evaluation_warnings.
364         * typeck.c (maybe_warn_about_useless_cast): Remove
365         c_inhibit_evaluation_warnings check.
367         PR c++/54440
368         * pt.c (get_template_parm_index): New.
369         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
370         (process_template_parm): Allow bare packs in template template
371         parm template parms.
372         (coerce_template_parameter_pack): Handle fixed template template
373         parm packs and fixed packs not at the end of the parm list.
374         (coerce_template_parms): Handle template parm packs not at the end
375         of the parm list.
376         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
378         PR c++/60182
379         * pt.c (unify): Ignore alias templates when deducing a template
380         template parameter.
382         PR c++/60345
383         Revert:
384         DR 1571
385         * call.c (reference_binding): Recurse on user-defined conversion.
386         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
388 2014-02-25  Jason Merrill  <jason@redhat.com>
390         DR 1571
391         * call.c (reference_binding): Recurse on user-defined conversion.
392         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
394         * call.c (print_conversion_rejection): Handle n_arg of -2.
395         (build_user_type_conversion_1): Pass it.
397         PR c++/55877
398         * decl2.c (no_linkage_error): Handle C++98 semantics.
399         (reset_type_linkage): Move from decl.c.
400         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
401         (bt_reset_linkage_2, reset_decl_linkage): New.
402         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
403         (cp_write_global_declarations): Move condition into no_linkage_error.
404         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
405         * semantics.c (expand_or_defer_fn_1): Factor out
406         tentative_decl_linkage.
407         * cp-tree.h: Adjust.
409         * decl2.c (finish_static_data_member_decl): Diagnose static data
410         member in unnamed class.
411         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
413         PR lto/53808
414         * class.c (clone_function_decl): Call note_vague_linkage_fn for
415         defaulted virtual dtor.
417         DR 1286
418         PR c++/60328
419         * pt.c (get_underlying_template): Fix equivalence calculation.
421 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
423         PR c++/60311
424         * parser.c (function_being_declared_is_template_p): Return false when
425         processing a template parameter list.
426         (cp_parser_parameter_declaration_clause): Don't set
427         auto_is_implicit_function_template_parm_p when processing a
428         template parameter list.
430         * parser.c (synthesize_implicit_template_parm): Inject new template
431         argument list appropriately when a generic member function
432         of a class template is declared out-of-line.
434         PR c++/60065
435         * parser.c (cp_parser_direct_declarator): Don't save and
436         restore num_template_parameter_lists around call to
437         cp_parser_parameter_declaration_list.
438         (function_being_declared_is_template_p): New predicate.
439         (cp_parser_parameter_declaration_list): Use
440         function_being_declared_is_template_p as predicate for
441         inspecting current function template parameter list length
442         rather than num_template_parameter_lists.
444 2014-02-24  Jason Merrill  <jason@redhat.com>
446         PR c++/60146
447         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
448         DECL_EXPR initialize a non-class iterator.
450         PR c++/60312
451         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
453 2014-02-21  Jason Merrill  <jason@redhat.com>
455         PR c++/58170
456         * parser.c (cp_parser_type_name): Always check dependency.
457         (cp_parser_type_specifier_seq): Call
458         cp_parser_parse_and_diagnose_invalid_type_name.
460         PR c++/60108
461         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
463         PR c++/60185
464         * parser.c (cp_parser_default_argument): Clear
465         current_class_ptr/current_class_ref like tsubst_default_argument.
467         PR c++/60252
468         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
469         than current_binding_level.
471         PR c++/60186
472         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
474         PR c++/60187
475         * parser.c (cp_parser_enum_specifier): Call
476         check_for_bare_parameter_packs.
478         PR c++/59347
479         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
480         erroneous typedef.
482         PR c++/60241
483         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
484         of the partial instantiation, not the most general template.
485         (maybe_process_partial_specialization): Reassign everything on
486         that list.
488         PR c++/60216
489         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
490         (check_explicit_specialization): Don't clone.
492         PR c++/60219
493         * pt.c (coerce_template_parms): Bail if argument packing fails.
495         PR c++/60224
496         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
497         Don't get confused by a CONSTRUCTOR that already has a type.
499         PR c++/60227
500         * call.c (build_array_conv): Don't crash on VLA.
502         PR c++/60248
503         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
505         PR c++/60252
506         * lambda.c (maybe_resolve_dummy): Don't try to capture this
507         in declaration context.
509         DR 1591
510         PR c++/60051
511         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
513         PR c++/60250
514         * parser.c (cp_parser_direct_declarator): Don't wrap a
515         type-dependent expression in a NOP_EXPR.
517         PR c++/60251
518         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
520         PR c++/60167
521         PR c++/60222
522         PR c++/58606
523         * parser.c (cp_parser_template_argument): Restore dereference.
524         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
525         (process_partial_specialization): Handle deref.
526         (unify): Likewise.
528 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
530         PR c++/60052
531         PR c++/60053
532         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
533         implicit_template_scope upon leaving an out-of-line generic member
534         function definition.
536 2014-02-20  Kai Tietz  <ktietz@redhat.com>
538         PR c++/58873
539         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
540         valued type argument as error_mark_node.
542         PR c++/58835
543         * semantics.c (finish_fname): Handle error_mark_node.
545 2014-02-19  Jason Merrill  <jason@redhat.com>
547         PR c++/60046
548         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
549         spec from template context.
551 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
553         PR debug/56563
554         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
555         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
557         PR c++/60267
558         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
560 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
562         PR c++/60225
563         * semantics.c (ensure_literal_type_for_constexpr_object): Use
564         strip_array_types.
566 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
568         PR c++/60215
569         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
570         During error recovery allow_non_constant may be false.
572 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
574         PR c++/60190
575         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
576         scope whenever a template parameter list has been started, independent
577         of whether the function call operator was well-formed or not.
579         PR c++/60064
580         * parser.c (cp_parser_member_declaration): Pop fully implicit template
581         scope for generic friend declarations as well as for non-friends.
583 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
585         PR c++/60047
586         * method.c (implicitly_declare_fn): A constructor of a class with
587         virtual base classes isn't constexpr (7.1.5p4).
589 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
591         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
593 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
595         PR c++/58703
596         * parser.c (cp_parser_omp_declare_reduction): Save and free
597         declarator_obstack.
599 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
601         PR c++/53017
602         PR c++/59211
603         * tree.c (handle_init_priority_attribute): Call default_conversion on
604         the attribute argument.
606 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
608         PR c++/58871
609         * method.c (synthesized_method_walk): If vbases is non-null but
610         is_empty is true, likewise don't worry about the virtual bases.
612 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
614         PR c++/51219
615         * typeck2.c (process_init_constructor_record): Just skip unnamed
616         bit-fields.
618 2014-01-31  Jason Merrill  <jason@redhat.com>
620         PR c++/59469
621         * pt.c (mark_decl_instantiated): Call mark_needed.
623         PR c++/58672
624         * decl2.c (handle_tls_init): Handle null init fn.
626         PR c++/55800
627         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
629 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
631         PR c++/59082
632         * class.c (build_vfield_ref): Early return error_mark_node if
633         TYPE_VFIELD (type) is null.
634         (build_base_path): Check return value of build_vfield_ref.
636 2014-01-31  Jason Merrill  <jason@redhat.com>
638         PR c++/59646
639         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
640         [ck_list]: Check for error_mark_node.
641         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
643         PR c++/57043
644         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
645         during partial ordering.
647 2014-01-31  Marek Polacek  <polacek@redhat.com>
649         PR c/59963
650         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
652 2014-01-30  Jason Merrill  <jason@redhat.com>
654         PR c++/57899
655         * cp-tree.h (struct saved_scope): Add x_local_specializations.
656         (local_specializations): New macro.
657         * pt.c (local_specializations): Remove variable.
659 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
661         PR c++/58708
662         * parser.c (make_string_pack): Use double_int::from_buffer.
664 2014-01-30  Marek Polacek  <polacek@redhat.com>
666         PR c/59940
667         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
668         input_location.
669         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
670         with input_location.
671         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
672         loc parameter.
674 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
676         PR c++/58843
677         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
679 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
681         PR c++/58649
682         * pt.c (lookup_template_class_1): Check start_enum return value
683         for error_mark_node.
685 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
687         * decl.c (duplicate_decls, typename_hash, typename_compare):
688         Use TYPE_IDENTIFIER.
689         * error.c (dump_type): Likewise.
690         * mangle.c (dump_substitution_candidates): Likewise.
692 2014-01-30  Jason Merrill  <jason@redhat.com>
694         PR c++/59633
695         * decl2.c (attributes_naming_typedef_ok): New.
696         * cp-tree.h: Declare it.
697         * decl.c (grokdeclarator): Check it.
698         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
700 2014-01-29  Jason Merrill  <jason@redhat.com>
702         PR c++/59707
703         * call.c (add_builtin_candidate): Catch dependent types.
705         PR c++/59989
706         * pt.c (expand_template_argument_pack): Correct
707         non_default_args_count calculation.
709         PR c++/58466
710         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
712         PR c++/59956
713         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
714         have a friend template in a class template.
715         * pt.c (tsubst_friend_function): Look through it.
716         (push_template_decl_real): A friend member template is
717         primary.
719 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
721         PR c++/58846
722         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
723         == error_mark_node.
725 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
727         PR c++/58674
728         * pt.c (instantiate_template_1): Check for error_mark_node the second
729         argument too.
731 2014-01-29  Jason Merrill  <jason@redhat.com>
733         PR c++/59916
734         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
735         cdtor_returns_this case.
737         PR c++/59315
738         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
740 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
742         PR c++/58702
743         * semantics.c (finish_omp_reduction_clause): Check type for
744         error_mark_node.
746 2014-01-28  Jason Merrill  <jason@redhat.com>
748         PR c++/59791
749         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
750         (tsubst_copy): Use it if lookup fails.
752         PR c++/59818
753         * pt.c (tsubst_function_type): Make sure we keep the same function
754         quals.
756         PR c++/58701
757         * semantics.c (build_anon_member_initialization): Stop walking
758         when we run out of COMPONENT_REFs.
760         PR c++/58632
761         * decl.c (lookup_and_check_tag): Ignore template parameters if
762         scope == ts_current.
763         * pt.c (check_template_shadow): Don't complain about the injected
764         class name.
766         * decl.c (duplicate_decls): Tweak.
768         PR c++/53756
769         * mangle.c (write_unqualified_name): Handle operator auto.
771 2014-01-27  Jason Merrill  <jason@redhat.com>
773         PR c++/59823
774         Core DR 1138
775         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
776         list-initialization.  A conversion to rvalue ref that involves
777         an lvalue-rvalue conversion is bad.
778         (convert_like_real): Give helpful error message.
780         PR c++/54652
781         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
783         PR c++/58504
784         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
785         types.
787         PR c++/58606
788         * pt.c (template_parm_to_arg): Call convert_from_reference.
789         (tsubst_template_arg): Don't strip reference refs.
791         PR c++/58639
792         * call.c (build_aggr_conv): Reject value-initialization of reference.
794         PR c++/58812
795         PR c++/58651
796         * call.c (convert_like_real): Give helpful error about excess braces
797         for ck_rvalue of scalar type.
799         Core DR 1288
800         * call.c (reference_binding): Only elide braces if the single
801         element is reference-related.
803         PR c++/58814
804         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
805         stabilizing.
807         PR c++/58837
808         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
809         FUNCTION_DECL.
811         PR c++/59097
812         * decl.c (compute_array_index_type): Don't call
813         maybe_constant_value for a non-integral expression.
815 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
817         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
818         flag_cilkplus.
819         * cp-gimplify.c (cp_genericize): Likewise.
820         * decl.c (grokfndecl): Likewise.
821         * parser.c (cp_parser_postfix_expression): Likewise.
822         (cp_parser_postfix_open_square_expression): Likewise.
823         (cp_parser_direct_declarator): Likewise.
824         (is_cilkplus_vector_p): Likewise.
825         (cp_parser_omp_clause_name): Likewise.
826         (cp_parser_omp_all_clauses): Likewise.
827         * pt.c (apply_late_template_attributes): Likewise.
828         * typeck.c (cp_build_array_ref): Likewise.
829         (cp_build_compound_expr): Likewise.
830         (check_return_expr): Likewise.
832 2014-01-24  Jason Merrill  <jason@redhat.com>
834         PR c++/58550
835         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
836         c++11 into error.
838         PR c++/59886
839         PR c++/59659
840         * typeck2.c (process_init_constructor_array): Don't create
841         RANGE_EXPR yet.
843 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
845         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
846         handling for RANGE_ARRAY case.
848 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
850         PR c++/57524
851         * name-lookup.c (push_using_directive): Use timevar_cond_start.
853 2014-01-23  Marek Polacek  <polacek@redhat.com>
855         PR c/59846
856         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
858 2014-01-23  Marek Polacek  <polacek@redhat.com>
860         PR c/58346
861         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
862         an empty aggregate.
864 2014-01-23  Jason Merrill  <jason@redhat.com>
866         PR c++/55189
867         * cp-tree.h (struct language_function): Add infinite_loop and
868         infinite_loops.
869         (current_function_infinite_loop): New.
870         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
871         (break_maybe_infinite_loop): New.
872         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
873         (finish_do_stmt, finish_for_cond, finish_for_stmt)
874         (begin_range_for_stmt): Use them.
875         * decl.c (finish_function): Don't warn about missing return
876         if current_function_infinite_loop.
877         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
878         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
880         * call.c (build_op_delete_call): Use make_tree_vector and
881         release_tree_vector.
883 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
885         PR c++/58980
886         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
887         nested_name_specifier.
889 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
891         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
892         see if there is an attribute after function decl.  If so, then
893         parse them now.
894         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
895         enabled function late parsing.
896         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
897         attribute for a SIMD-enabled function.
898         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
899         the function is used by SIMD-enabled function (indicated by NULL
900         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
901         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
902         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
903         vectorlength clause in SIMD-enabled function and #pragma SIMD's
904         vectorlength clause.  Added a new bool parameter to differentiate
905         between the two.
906         (cp_parser_cilk_simd_fn_vector_attrs): New function.
907         (is_cilkplus_vector_p): Likewise.
908         (cp_parser_late_parsing_elem_fn_info): Likewise.
909         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
910         and "vectorlength" clauses when Cilk Plus is enabled.
911         (cp_parser_omp_clause_linear): Added a new parameter of type bool
912         and emit a sorry message when step size is a parameter.
913         * parser.h (cp_parser::cilk_simd_fn_info): New field.
914         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
915         flag_openmp.
916         * pt.c (apply_late_template_attributes): Likewise.
918 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
920         PR middle-end/58809
921         * semantics.c (finish_omp_reduction_clause): Reject
922         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
924 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
926         PR c++/59482
927         * parser.c (cp_parser_class_head): Push the class before parsing
928         the base-clause, pop after it.
930 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
932         * decl2.c (cpp_check): Revert prototype change.
934 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
936         PR c++/59270
937         PR c++/58811
938         * init.c (build_value_init_noctor): Don't pass error_mark_node to
939         build_value_init.
941 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
943         PR c++/59269
944         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
945         only when errorcount == 0.
947 2014-01-17  Marek Polacek  <polacek@redhat.com>
949         PR c++/59838
950         * cvt.c (ocp_convert): Don't segfault on non-existing
951         ENUM_UNDERLYING_TYPE.
953 2014-01-16  Jason Merrill  <jason@redhat.com>
955         PR c++/59821
956         * tree.c (bot_manip): Update the location of builtin_LINE and
957         builtin_FILE calls.
959 2014-01-14  Jason Merrill  <jason@redhat.com>
961         PR c++/59659
962         * typeck2.c (massage_init_elt): New.
963         (process_init_constructor_record)
964         (process_init_constructor_union): Use it.
965         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
966         (split_nonconstant_init_1): Handle it.
967         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
969 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
971         PR c++/59631
972         * parser.c (cp_parser_postfix_expression): Added a new if-statement
973         and replaced an existing if-statement with else-if statement.
974         Changed an existing error message wording to match the one from the C
975         parser.
977 2014-01-08  Jason Merrill  <jason@redhat.com>
979         PR c++/59614
980         * class.c (abi_tag_data): Add tags field.
981         (check_abi_tags): Initialize it.
982         (find_abi_tags_r): Support collecting missing tags.
983         (mark_type_abi_tags): Don't look at template args.
984         (inherit_targ_abi_tags): New.
985         (check_bases_and_members): Use it.
986         * cp-tree.h (ABI_TAG_IMPLICIT): New.
987         * mangle.c (write_abi_tags): Check it.
989 2014-01-07  Jason Merrill  <jason@redhat.com>
991         PR c++/58856
992         * pt.c (num_innermost_template_parms): New.
993         (get_underlying_template): Use it.
995         PR c++/58965
996         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
998 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
1000         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1001         the letter of 20.11.6 about Base and Derived naming the same
1002         class type modulo cv-qualifiers.
1004 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
1006         PR c++/59635
1007         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1008         function as unimplemented for generic lambdas with varargs.
1010         PR c++/59636
1011         * parser.c (cp_parser_template_parameter): Early out with
1012         error_mark_node if parameter declaration was not parsed.
1014         PR c++/59629
1015         * parser.c (cp_parser_lambda_expression): Save/reset/restore
1016         auto_is_implicit_function_template_parm_p around lambda body.
1018         PR c++/59638
1019         * parser.c (cp_parser_init_declarator): Undo fully implicit
1020         template parameter list when declarator is not a function.
1022 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
1024         PR c++/58950
1025         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1027 2014-01-03  Tobias Burnus  <burnus@net-b.de>
1029         PR c++/58567
1030         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1032 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
1034         Core DR 1442
1035         PR c++/59165
1036         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1037         as include_std to perform_koenig_lookup.
1038         (cp_parser_postfix_expression): Adjust.
1039         * pt.c (tsubst_copy_and_build): Likewise.
1040         * semantics.c (perform_koenig_lookup): Remove bool parameter.
1041         (omp_reduction_lookup): Adjust.
1042         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1043         (lookup_arg_dependent): Likewise.
1044         (lookup_function_nonclass): Adjust.
1045         * name-lookup.h: Adjust declaration.
1046         * cp-tree.h: Likewise.
1048 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1050         PR c++/59087
1051         * parser.c (cp_parser_userdef_numeric_literal): Mention
1052         -fext-numeric-literals in the message.
1054 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1056         PR c++/59641
1057         * call.c (build_conditional_expr_1): Check the return value of
1058         force_rvalue.
1060 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1062         * call.c (convert_like_real): Check complain.
1064 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1066         PR c++/59378
1067         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1068         in templates.
1070 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1072         Update copyright years
1074 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1076         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1077         the standard form for the copyright notice.
1079 Copyright (C) 2014 Free Software Foundation, Inc.
1081 Copying and distribution of this file, with or without modification,
1082 are permitted in any medium without royalty provided the copyright
1083 notice and this notice are preserved.