Merged revisions 208012,208018-208019,208021,208023-208030,208033,208037,208040-20804...
[official-gcc.git] / main / gcc / cp / ChangeLog
blob49f0d4af2c502f6feb336ee773e49ba1e4ceb80d
1 2014-03-28  Adam Butcher  <adam@jessamine.co.uk>
3         PR c++/60573
4         * name-lookup.h (cp_binding_level): New transient field defining_class_p
5         to indicate whether a scope is in the process of defining a class.
6         * semantics.c (begin_class_definition): Set defining_class_p.
7         * name-lookup.c (leave_scope): Reset defining_class_p.
8         * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
9         defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
10         unwinding to class-defining scope to handle the erroneous definition of
11         a generic function of an arbitrarily nested class within an enclosing
12         class.
14 2014-03-26  Fabien ChĂȘne  <fabien@gcc.gnu.org>
16         PR c++/52369
17         * cp/method.c (walk_field_subobs): improve the diagnostic
18         locations for both REFERENCE_TYPEs and non-static const members.
19         * cp/init.c (diagnose_uninitialized_cst_or_ref_member): use %q#D
20         instead of %qD to be consistent with the c++11 diagnostic.
22 2014-03-25  Jason Merrill  <jason@redhat.com>
24         PR c++/60566
25         PR c++/58678
26         * class.c (build_vtbl_initializer): Handle abstract dtors here.
27         * search.c (get_pure_virtuals): Not here.
29         PR c++/60375
30         * parser.c (cp_parser_lambda_expression): Don't parse the body of
31         a lambda in unevaluated context.
33         PR c++/60628
34         * decl.c (create_array_type_for_decl): Complain about array of auto.
36 2014-03-25  Jakub Jelinek  <jakub@redhat.com>
38         PR c++/60331
39         * semantics.c (potential_constant_expression_1): Handle
40         DECL_EXPR.
42 2014-03-24  Adam Butcher  <adam@jessamine.co.uk>
44         PR c++/60627
45         * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
46         introducing an implicit function template parameter within an explicit
47         instantiation.
49 2014-03-22  Jason Merrill  <jason@redhat.com>
51         PR c++/60574
52         * decl.c (grokdeclarator): Change permerror about 'virtual auto'
53         to error.
55 2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
57         PR c++/60384
58         * name-lookup.c (push_class_level_binding_1): Check identifier_p
59         on the name argument.
61 2014-03-20  Jakub Jelinek  <jakub@redhat.com>
63         PR c++/60572
64         * init.c (build_zero_init_1): Ignore fields with error_mark_node
65         type.
67 2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>
69         PR c++/51474
70         * call.c (build_new_method_call_1): Handle pure virtuals called by
71         NSDMIs too.
73 2014-03-17  Adam Butcher  <adam@jessamine.co.uk>
75         PR c++/60390
76         * parser.c (cp_parser_member_declaration): Don't allow
77         finish_fully_implicit_template to consider friend declarations to be
78         class member templates.
79         (synthesize_implicit_template_parm): Handling winding back through class
80         scope to the class being defined in order to inject a template argument
81         list.
83         PR c++/60391
84         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
85         function scope as per cp_parser_skip_to_end_of_statement.
87 2014-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
89         PR c++/59571
90         * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
92 2014-03-14  Jason Merrill  <jason@redhat.com>
94         PR c++/60532
95         PR c++/58678
96         * search.c (get_pure_virtuals): Handle abstract dtor here.
97         (dfs_get_pure_virtuals): Not here.
99         PR c++/58678
100         * search.c (dfs_get_pure_virtuals): Treat the destructor of an
101         abstract class as pure.
103 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
105         PR c++/60383
106         * pt.c (maybe_process_partial_specialization): Check return value
107         of check_specialization_namespace.
109 2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
111         PR c++/60254
112         * semantics.c (finish_static_assert): Call cxx_constant_value only
113         if require_potential_rvalue_constant_expression returns true.
115 2014-03-11  Paolo Carlini  <paolo.carlini@oracle.com>
117         PR c++/60389
118         * method.c (get_inherited_ctor): New.
119         * cp-tree.h (get_inherited_ctor): Declare it.
120         * semantics.c (is_valid_constexpr_fn): Use it.
122 2014-03-10  Jason Merrill  <jason@redhat.com>
124         PR c++/60367
125         * call.c (convert_default_arg): Remove special handling for
126         CONSTRUCTOR.
128         PR c++/53492
129         * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
130         when deciding whether to call push_template_decl for a member class.
131         * pt.c (push_template_decl_real): Return after wrong levels error.
133 2014-03-08  Adam Butcher  <adam@jessamine.co.uk>
135         PR c++/60033
136         * pt.c (tsubst_copy): When retrieving a capture pack from a generic
137         lambda, remove the lambda's own template argument list prior to fetching
138         the specialization.
140         PR c++/60393
141         * parser.c (cp_parser_parameter_declaration_clause): Move generic
142         function template unwinding on error into a more general location, ...
143         (cp_parser_skip_to_end_of_statement): ... here.
145 2014-03-07  Jason Merrill  <jason@redhat.com>
147         * Make-lang.in (check_g++_parallelize): Split dg.exp.
149         * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
150         we're in a trailing return type.
152         * typeck.c (comp_template_parms_position): 'auto' and
153         'decltype(auto)' are different from real template parms.
155         * parser.c (cp_parser_using_declaration): Consume the semicolon
156         after bare parameter pack error.
158         * cp-tree.h (REF_PARENTHESIZED_P): New.
159         * semantics.c (force_paren_expr): Set it.
160         * pt.c (do_auto_deduction): Check it.
161         (tsubst) [COMPONENT_REF]: Copy it.
162         * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
164         * decl.c (create_array_type_for_decl): Only warn about invalid
165         C++1y VLA if flag_iso or warn_vla>0.
166         (grokdeclarator): Likewise.
167         * pt.c (tsubst): Likewise.
168         * semantics.c (finish_decltype_type): Likewise.
169         * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
170         (cp_build_addr_expr_1): Likewise.
171         * init.c (build_new_1): Improve diagnostics.
173 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
175         PR c++/58609
176         * decl.c (check_initializer): Return NULL_TREE after error;
177         consistently use inform.
179 2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>
181         * decl.c (check_initializer): Remove dead code.
183 2014-03-06  Marek Polacek  <polacek@redhat.com>
185         PR c/60197
186         * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
187         of checking tree code.
189 2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
191         * parser.c (cp_lexer_set_source_position): New.
192         (cp_parser_mem_initializer): Use it.
193         (cp_parser_postfix_open_square_expression): Likewise.
194         (cp_parser_parenthesized_expression_list): Likewise.
195         (cp_parser_new_initializer): Likewise.
196         (cp_parser_jump_statement): Likewise.
197         (cp_parser_initializer): Likewise.
198         (cp_parser_functional_cast): Likewise.
200 2014-03-05  Jason Merrill  <jason@redhat.com>
202         PR c++/60409
203         * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
204         dependent expression.
206         PR c++/60361
207         * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
208         if re-parsing might succeed.
209         * semantics.c (finish_id_expression): Use of a parameter outside
210         the function body is a parse error.
212         * parser.c (cp_parser_mem_initializer): Set input_location
213         properly for init-list warning.
214         (cp_parser_postfix_open_square_expression): Likewise.
215         (cp_parser_parenthesized_expression_list): Likewise.
216         (cp_parser_new_initializer): Likewise.
217         (cp_parser_jump_statement): Likewise.
218         (cp_parser_initializer): Likewise.
219         (cp_parser_functional_cast): Likewise.
221 2014-03-04  Jason Merrill  <jason@redhat.com>
223         PR c++/60417
224         * typeck2.c (process_init_constructor_record): Set
225         CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
227         PR c++/60415
228         PR c++/54359
229         * parser.c (cp_parser_direct_declarator): Set declarator to
230         cp_error_declarator on invalid qualified-id.
232 2014-03-04  Paolo Carlini  <paolo.carlini@oracle.com>
234         PR c++/60376
235         * parser.c (cp_parser_using_declaration): Early return when
236         cp_parser_nested_name_specifier errors out.
238 2014-03-01  Adam Butcher  <adam@jessamine.co.uk>
240         PR c++/60377
241         * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
242         function scope on parse error in function parameter list.
244 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
246         * method.c (implicitly_declare_fn): Remove redundant
247         DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
248         * semantics.c (is_instantiation_of_constexpr): Likewise.
249         * error.c (dump_function_decl): Likewise.
251 2014-03-01  Jason Merrill  <jason@redhat.com>
253         PR c++/60379
254         * semantics.c (begin_maybe_infinite_loop): Use
255         fold_non_dependent_expr_sfinae.
257 2014-02-28  Jason Merrill  <jason@redhat.com>
259         PR c++/58845
260         * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
262 2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>
264         PR c++/58610
265         * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
266         * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
267         * lambda.c (maybe_add_lambda_conv_op): Likewise.
269 2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>
271         PR c++/60253
272         * call.c (convert_arg_to_ellipsis): Return error_mark_node after
273         error_at.
275 2014-02-27  Jason Merrill  <jason@redhat.com>
277         PR c++/60353
278         PR c++/55877
279         * decl2.c (tentative_decl_linkage): Don't mess with functions that
280         are not yet defined.
282 2014-02-26  Jason Merrill  <jason@redhat.com>
284         PR c++/60347
285         PR lto/53808
286         * class.c (clone_function_decl): Don't note_vague_linkage_fn.
287         * init.c (build_vtbl_address): Do it here.
289         PR c++/59231
290         PR c++/11586
291         PR c++/14710
292         PR c++/57132
293         * pt.c (struct warning_sentinel): New.
294         (tsubst_copy_and_build): Use it instead of
295         c_inhibit_evaluation_warnings.
296         * typeck.c (maybe_warn_about_useless_cast): Remove
297         c_inhibit_evaluation_warnings check.
299         PR c++/54440
300         * pt.c (get_template_parm_index): New.
301         (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
302         (process_template_parm): Allow bare packs in template template
303         parm template parms.
304         (coerce_template_parameter_pack): Handle fixed template template
305         parm packs and fixed packs not at the end of the parm list.
306         (coerce_template_parms): Handle template parm packs not at the end
307         of the parm list.
308         (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
310         PR c++/60182
311         * pt.c (unify): Ignore alias templates when deducing a template
312         template parameter.
314         PR c++/60345
315         Revert:
316         DR 1571
317         * call.c (reference_binding): Recurse on user-defined conversion.
318         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
320 2014-02-25  Jason Merrill  <jason@redhat.com>
322         DR 1571
323         * call.c (reference_binding): Recurse on user-defined conversion.
324         (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
326         * call.c (print_conversion_rejection): Handle n_arg of -2.
327         (build_user_type_conversion_1): Pass it.
329         PR c++/55877
330         * decl2.c (no_linkage_error): Handle C++98 semantics.
331         (reset_type_linkage): Move from decl.c.
332         (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
333         (bt_reset_linkage_2, reset_decl_linkage): New.
334         (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
335         (cp_write_global_declarations): Move condition into no_linkage_error.
336         * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
337         * semantics.c (expand_or_defer_fn_1): Factor out
338         tentative_decl_linkage.
339         * cp-tree.h: Adjust.
341         * decl2.c (finish_static_data_member_decl): Diagnose static data
342         member in unnamed class.
343         * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
345         PR lto/53808
346         * class.c (clone_function_decl): Call note_vague_linkage_fn for
347         defaulted virtual dtor.
349         DR 1286
350         PR c++/60328
351         * pt.c (get_underlying_template): Fix equivalence calculation.
353 2014-02-25  Adam Butcher  <adam@jessamine.co.uk>
355         PR c++/60311
356         * parser.c (function_being_declared_is_template_p): Return false when
357         processing a template parameter list.
358         (cp_parser_parameter_declaration_clause): Don't set
359         auto_is_implicit_function_template_parm_p when processing a
360         template parameter list.
362         * parser.c (synthesize_implicit_template_parm): Inject new template
363         argument list appropriately when a generic member function
364         of a class template is declared out-of-line.
366         PR c++/60065
367         * parser.c (cp_parser_direct_declarator): Don't save and
368         restore num_template_parameter_lists around call to
369         cp_parser_parameter_declaration_list.
370         (function_being_declared_is_template_p): New predicate.
371         (cp_parser_parameter_declaration_list): Use
372         function_being_declared_is_template_p as predicate for
373         inspecting current function template parameter list length
374         rather than num_template_parameter_lists.
376 2014-02-24  Jason Merrill  <jason@redhat.com>
378         PR c++/60146
379         * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
380         DECL_EXPR initialize a non-class iterator.
382         PR c++/60312
383         * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
385 2014-02-21  Jason Merrill  <jason@redhat.com>
387         PR c++/58170
388         * parser.c (cp_parser_type_name): Always check dependency.
389         (cp_parser_type_specifier_seq): Call
390         cp_parser_parse_and_diagnose_invalid_type_name.
392         PR c++/60108
393         * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
395         PR c++/60185
396         * parser.c (cp_parser_default_argument): Clear
397         current_class_ptr/current_class_ref like tsubst_default_argument.
399         PR c++/60252
400         * lambda.c (maybe_resolve_dummy): Check lambda_function rather
401         than current_binding_level.
403         PR c++/60186
404         * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
406         PR c++/60187
407         * parser.c (cp_parser_enum_specifier): Call
408         check_for_bare_parameter_packs.
410         PR c++/59347
411         * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
412         erroneous typedef.
414         PR c++/60241
415         * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
416         of the partial instantiation, not the most general template.
417         (maybe_process_partial_specialization): Reassign everything on
418         that list.
420         PR c++/60216
421         * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
422         (check_explicit_specialization): Don't clone.
424         PR c++/60219
425         * pt.c (coerce_template_parms): Bail if argument packing fails.
427         PR c++/60224
428         * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
429         Don't get confused by a CONSTRUCTOR that already has a type.
431         PR c++/60227
432         * call.c (build_array_conv): Don't crash on VLA.
434         PR c++/60248
435         * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
437         PR c++/60252
438         * lambda.c (maybe_resolve_dummy): Don't try to capture this
439         in declaration context.
441         DR 1591
442         PR c++/60051
443         * pt.c (unify): Only unify if deducible.  Handle 0-length list.
445         PR c++/60250
446         * parser.c (cp_parser_direct_declarator): Don't wrap a
447         type-dependent expression in a NOP_EXPR.
449         PR c++/60251
450         * lambda.c (is_normal_capture_proxy): Handle VLA capture.
452         PR c++/60167
453         PR c++/60222
454         PR c++/58606
455         * parser.c (cp_parser_template_argument): Restore dereference.
456         * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
457         (process_partial_specialization): Handle deref.
458         (unify): Likewise.
460 2014-02-21  Adam Butcher  <adam@jessamine.co.uk>
462         PR c++/60052
463         PR c++/60053
464         * parser.c (cp_parser_parameter_declaration_list): Correctly reset
465         implicit_template_scope upon leaving an out-of-line generic member
466         function definition.
468 2014-02-20  Kai Tietz  <ktietz@redhat.com>
470         PR c++/58873
471         * parser.c (cp_parser_functional_cast): Treat NULL_TREE
472         valued type argument as error_mark_node.
474         PR c++/58835
475         * semantics.c (finish_fname): Handle error_mark_node.
477 2014-02-19  Jason Merrill  <jason@redhat.com>
479         PR c++/60046
480         * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
481         spec from template context.
483 2014-02-19  Jakub Jelinek  <jakub@redhat.com>
485         PR debug/56563
486         * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
487         FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
489         PR c++/60267
490         * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
492 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
494         PR c++/60225
495         * semantics.c (ensure_literal_type_for_constexpr_object): Use
496         strip_array_types.
498 2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
500         PR c++/60215
501         * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
502         During error recovery allow_non_constant may be false.
504 2014-02-18  Adam Butcher  <adam@jessamine.co.uk>
506         PR c++/60190
507         * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
508         scope whenever a template parameter list has been started, independent
509         of whether the function call operator was well-formed or not.
511         PR c++/60064
512         * parser.c (cp_parser_member_declaration): Pop fully implicit template
513         scope for generic friend declarations as well as for non-friends.
515 2014-02-12  Paolo Carlini  <paolo.carlini@oracle.com>
517         PR c++/60047
518         * method.c (implicitly_declare_fn): A constructor of a class with
519         virtual base classes isn't constexpr (7.1.5p4).
521 2014-02-05  Jan Hubicka  <hubicka@ucw.cz
523         * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
525 2014-02-05  Jakub Jelinek  <jakub@redhat.com>
527         PR c++/58703
528         * parser.c (cp_parser_omp_declare_reduction): Save and free
529         declarator_obstack.
531 2014-02-03  Marc Glisse  <marc.glisse@inria.fr>
533         PR c++/53017
534         PR c++/59211
535         * tree.c (handle_init_priority_attribute): Call default_conversion on
536         the attribute argument.
538 2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
540         PR c++/58871
541         * method.c (synthesized_method_walk): If vbases is non-null but
542         is_empty is true, likewise don't worry about the virtual bases.
544 2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
546         PR c++/51219
547         * typeck2.c (process_init_constructor_record): Just skip unnamed
548         bit-fields.
550 2014-01-31  Jason Merrill  <jason@redhat.com>
552         PR c++/59469
553         * pt.c (mark_decl_instantiated): Call mark_needed.
555         PR c++/58672
556         * decl2.c (handle_tls_init): Handle null init fn.
558         PR c++/55800
559         * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
561 2014-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
563         PR c++/59082
564         * class.c (build_vfield_ref): Early return error_mark_node if
565         TYPE_VFIELD (type) is null.
566         (build_base_path): Check return value of build_vfield_ref.
568 2014-01-31  Jason Merrill  <jason@redhat.com>
570         PR c++/59646
571         * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
572         [ck_list]: Check for error_mark_node.
573         (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
575         PR c++/57043
576         * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
577         during partial ordering.
579 2014-01-31  Marek Polacek  <polacek@redhat.com>
581         PR c/59963
582         * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
584 2014-01-30  Jason Merrill  <jason@redhat.com>
586         PR c++/57899
587         * cp-tree.h (struct saved_scope): Add x_local_specializations.
588         (local_specializations): New macro.
589         * pt.c (local_specializations): Remove variable.
591 2014-01-30  Richard Sandiford  <rdsandiford@googlemail.com>
593         PR c++/58708
594         * parser.c (make_string_pack): Use double_int::from_buffer.
596 2014-01-30  Marek Polacek  <polacek@redhat.com>
598         PR c/59940
599         * typeck.c (build_ptrmemfunc1): Call convert_and_check with
600         input_location.
601         * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
602         with input_location.
603         * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
604         loc parameter.
606 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
608         PR c++/58843
609         * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
611 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
613         PR c++/58649
614         * pt.c (lookup_template_class_1): Check start_enum return value
615         for error_mark_node.
617 2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
619         * decl.c (duplicate_decls, typename_hash, typename_compare):
620         Use TYPE_IDENTIFIER.
621         * error.c (dump_type): Likewise.
622         * mangle.c (dump_substitution_candidates): Likewise.
624 2014-01-30  Jason Merrill  <jason@redhat.com>
626         PR c++/59633
627         * decl2.c (attributes_naming_typedef_ok): New.
628         * cp-tree.h: Declare it.
629         * decl.c (grokdeclarator): Check it.
630         * tree.c (no_linkage_check): Handle VECTOR_TYPE.
632 2014-01-29  Jason Merrill  <jason@redhat.com>
634         PR c++/59707
635         * call.c (add_builtin_candidate): Catch dependent types.
637         PR c++/59989
638         * pt.c (expand_template_argument_pack): Correct
639         non_default_args_count calculation.
641         PR c++/58466
642         * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
644         PR c++/59956
645         * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
646         have a friend template in a class template.
647         * pt.c (tsubst_friend_function): Look through it.
648         (push_template_decl_real): A friend member template is
649         primary.
651 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
653         PR c++/58846
654         * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
655         == error_mark_node.
657 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
659         PR c++/58674
660         * pt.c (instantiate_template_1): Check for error_mark_node the second
661         argument too.
663 2014-01-29  Jason Merrill  <jason@redhat.com>
665         PR c++/59916
666         * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
667         cdtor_returns_this case.
669         PR c++/59315
670         * decl.c (cxx_maybe_build_cleanup): Call mark_used.
672 2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
674         PR c++/58702
675         * semantics.c (finish_omp_reduction_clause): Check type for
676         error_mark_node.
678 2014-01-28  Jason Merrill  <jason@redhat.com>
680         PR c++/59791
681         * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
682         (tsubst_copy): Use it if lookup fails.
684         PR c++/59818
685         * pt.c (tsubst_function_type): Make sure we keep the same function
686         quals.
688         PR c++/58701
689         * semantics.c (build_anon_member_initialization): Stop walking
690         when we run out of COMPONENT_REFs.
692         PR c++/58632
693         * decl.c (lookup_and_check_tag): Ignore template parameters if
694         scope == ts_current.
695         * pt.c (check_template_shadow): Don't complain about the injected
696         class name.
698         * decl.c (duplicate_decls): Tweak.
700         PR c++/53756
701         * mangle.c (write_unqualified_name): Handle operator auto.
703 2014-01-27  Jason Merrill  <jason@redhat.com>
705         PR c++/59823
706         Core DR 1138
707         * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
708         list-initialization.  A conversion to rvalue ref that involves
709         an lvalue-rvalue conversion is bad.
710         (convert_like_real): Give helpful error message.
712         PR c++/54652
713         * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
715         PR c++/58504
716         * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
717         types.
719         PR c++/58606
720         * pt.c (template_parm_to_arg): Call convert_from_reference.
721         (tsubst_template_arg): Don't strip reference refs.
723         PR c++/58639
724         * call.c (build_aggr_conv): Reject value-initialization of reference.
726         PR c++/58812
727         PR c++/58651
728         * call.c (convert_like_real): Give helpful error about excess braces
729         for ck_rvalue of scalar type.
731         Core DR 1288
732         * call.c (reference_binding): Only elide braces if the single
733         element is reference-related.
735         PR c++/58814
736         * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
737         stabilizing.
739         PR c++/58837
740         * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
741         FUNCTION_DECL.
743         PR c++/59097
744         * decl.c (compute_array_index_type): Don't call
745         maybe_constant_value for a non-integral expression.
747 2014-01-24  Balaji V. Iyer  <balaji.v.iyer@intel.com>
749         * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
750         flag_cilkplus.
751         * cp-gimplify.c (cp_genericize): Likewise.
752         * decl.c (grokfndecl): Likewise.
753         * parser.c (cp_parser_postfix_expression): Likewise.
754         (cp_parser_postfix_open_square_expression): Likewise.
755         (cp_parser_direct_declarator): Likewise.
756         (is_cilkplus_vector_p): Likewise.
757         (cp_parser_omp_clause_name): Likewise.
758         (cp_parser_omp_all_clauses): Likewise.
759         * pt.c (apply_late_template_attributes): Likewise.
760         * typeck.c (cp_build_array_ref): Likewise.
761         (cp_build_compound_expr): Likewise.
762         (check_return_expr): Likewise.
764 2014-01-24  Jason Merrill  <jason@redhat.com>
766         PR c++/58550
767         * decl.c (grokdeclarator): Turn pedwarn about auto return type in
768         c++11 into error.
770         PR c++/59886
771         PR c++/59659
772         * typeck2.c (process_init_constructor_array): Don't create
773         RANGE_EXPR yet.
775 2014-01-24  Jakub Jelinek  <jakub@redhat.com>
777         * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
778         handling for RANGE_ARRAY case.
780 2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>
782         PR c++/57524
783         * name-lookup.c (push_using_directive): Use timevar_cond_start.
785 2014-01-23  Marek Polacek  <polacek@redhat.com>
787         PR c/59846
788         * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
790 2014-01-23  Marek Polacek  <polacek@redhat.com>
792         PR c/58346
793         * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
794         an empty aggregate.
796 2014-01-23  Jason Merrill  <jason@redhat.com>
798         PR c++/55189
799         * cp-tree.h (struct language_function): Add infinite_loop and
800         infinite_loops.
801         (current_function_infinite_loop): New.
802         * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
803         (break_maybe_infinite_loop): New.
804         (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
805         (finish_do_stmt, finish_for_cond, finish_for_stmt)
806         (begin_range_for_stmt): Use them.
807         * decl.c (finish_function): Don't warn about missing return
808         if current_function_infinite_loop.
809         * pt.c (instantiate_decl): Copy current_function_infinite_loop.
810         * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
812         * call.c (build_op_delete_call): Use make_tree_vector and
813         release_tree_vector.
815 2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
817         PR c++/58980
818         * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
819         nested_name_specifier.
821 2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>
823         * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
824         see if there is an attribute after function decl.  If so, then
825         parse them now.
826         (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
827         enabled function late parsing.
828         (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
829         attribute for a SIMD-enabled function.
830         (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
831         the function is used by SIMD-enabled function (indicated by NULL
832         pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
833         PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
834         (cp_parser_cilk_simd_vectorlength): Modified this function to handle
835         vectorlength clause in SIMD-enabled function and #pragma SIMD's
836         vectorlength clause.  Added a new bool parameter to differentiate
837         between the two.
838         (cp_parser_cilk_simd_fn_vector_attrs): New function.
839         (is_cilkplus_vector_p): Likewise.
840         (cp_parser_late_parsing_elem_fn_info): Likewise.
841         (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
842         and "vectorlength" clauses when Cilk Plus is enabled.
843         (cp_parser_omp_clause_linear): Added a new parameter of type bool
844         and emit a sorry message when step size is a parameter.
845         * parser.h (cp_parser::cilk_simd_fn_info): New field.
846         * decl.c (grokfndecl): Added flag_enable_cilkplus along with
847         flag_openmp.
848         * pt.c (apply_late_template_attributes): Likewise.
850 2014-01-23  Jakub Jelinek  <jakub@redhat.com>
852         PR middle-end/58809
853         * semantics.c (finish_omp_reduction_clause): Reject
854         BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
856 2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
858         PR c++/59482
859         * parser.c (cp_parser_class_head): Push the class before parsing
860         the base-clause, pop after it.
862 2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>
864         * decl2.c (cpp_check): Revert prototype change.
866 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
868         PR c++/59270
869         PR c++/58811
870         * init.c (build_value_init_noctor): Don't pass error_mark_node to
871         build_value_init.
873 2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
875         PR c++/59269
876         * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
877         only when errorcount == 0.
879 2014-01-17  Marek Polacek  <polacek@redhat.com>
881         PR c++/59838
882         * cvt.c (ocp_convert): Don't segfault on non-existing
883         ENUM_UNDERLYING_TYPE.
885 2014-01-16  Jason Merrill  <jason@redhat.com>
887         PR c++/59821
888         * tree.c (bot_manip): Update the location of builtin_LINE and
889         builtin_FILE calls.
891 2014-01-14  Jason Merrill  <jason@redhat.com>
893         PR c++/59659
894         * typeck2.c (massage_init_elt): New.
895         (process_init_constructor_record)
896         (process_init_constructor_union): Use it.
897         (process_init_constructor_array): Use it.  Use RANGE_EXPR.
898         (split_nonconstant_init_1): Handle it.
899         * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
901 2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
903         PR c++/59631
904         * parser.c (cp_parser_postfix_expression): Added a new if-statement
905         and replaced an existing if-statement with else-if statement.
906         Changed an existing error message wording to match the one from the C
907         parser.
909 2014-01-08  Jason Merrill  <jason@redhat.com>
911         PR c++/59614
912         * class.c (abi_tag_data): Add tags field.
913         (check_abi_tags): Initialize it.
914         (find_abi_tags_r): Support collecting missing tags.
915         (mark_type_abi_tags): Don't look at template args.
916         (inherit_targ_abi_tags): New.
917         (check_bases_and_members): Use it.
918         * cp-tree.h (ABI_TAG_IMPLICIT): New.
919         * mangle.c (write_abi_tags): Check it.
921 2014-01-07  Jason Merrill  <jason@redhat.com>
923         PR c++/58856
924         * pt.c (num_innermost_template_parms): New.
925         (get_underlying_template): Use it.
927         PR c++/58965
928         * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
930 2014-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
932         * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
933         the letter of 20.11.6 about Base and Derived naming the same
934         class type modulo cv-qualifiers.
936 2014-01-06  Adam Butcher  <adam@jessamine.co.uk>
938         PR c++/59635
939         * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
940         function as unimplemented for generic lambdas with varargs.
942         PR c++/59636
943         * parser.c (cp_parser_template_parameter): Early out with
944         error_mark_node if parameter declaration was not parsed.
946         PR c++/59629
947         * parser.c (cp_parser_lambda_expression): Save/reset/restore
948         auto_is_implicit_function_template_parm_p around lambda body.
950         PR c++/59638
951         * parser.c (cp_parser_init_declarator): Undo fully implicit
952         template parameter list when declarator is not a function.
954 2014-01-03  Marc Glisse  <marc.glisse@inria.fr>
956         PR c++/58950
957         * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
959 2014-01-03  Tobias Burnus  <burnus@net-b.de>
961         PR c++/58567
962         * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
964 2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>
966         Core DR 1442
967         PR c++/59165
968         * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
969         as include_std to perform_koenig_lookup.
970         (cp_parser_postfix_expression): Adjust.
971         * pt.c (tsubst_copy_and_build): Likewise.
972         * semantics.c (perform_koenig_lookup): Remove bool parameter.
973         (omp_reduction_lookup): Adjust.
974         * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
975         (lookup_arg_dependent): Likewise.
976         (lookup_function_nonclass): Adjust.
977         * name-lookup.h: Adjust declaration.
978         * cp-tree.h: Likewise.
980 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
982         PR c++/59087
983         * parser.c (cp_parser_userdef_numeric_literal): Mention
984         -fext-numeric-literals in the message.
986 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
988         PR c++/59641
989         * call.c (build_conditional_expr_1): Check the return value of
990         force_rvalue.
992 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
994         * call.c (convert_like_real): Check complain.
996 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
998         PR c++/59378
999         * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1000         in templates.
1002 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1004         Update copyright years
1006 2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
1008         * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1009         the standard form for the copyright notice.
1011 Copyright (C) 2014 Free Software Foundation, Inc.
1013 Copying and distribution of this file, with or without modification,
1014 are permitted in any medium without royalty provided the copyright
1015 notice and this notice are preserved.