* cxx-pretty-print.c: Correct merge error.
[official-gcc.git] / gcc / cp / ChangeLog
blob5275eca53c4a8832a822b63bccaacfa6daf8f73f
1 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
3         * cxx-pretty-print.c: Correct merge error.
5 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
7         * error.c: Include tree-diagnostic.h and tree-pretty-print.h.
8         (cp_print_error_function): Use diagnostic_abstract_origin macro.
9         (cp_printer): Handle %K here using percent_K_format.
10         * cxx-pretty-print.c: Include tree-pretty-print.h.
11         * Make-lang.in (cp/error.o, cp/cxx-pretty-print.o): Update
12         dependencies.
14 2010-05-21  Steven Bosscher  <steven@gcc.gnu.org>
16         * error.c, tree.c, typeck2.c, cxx-pretty-print.c, mangle.c:
17         Clean up redundant includes.
19 2010-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
21         PR c++/30298
22         * decl.c (xref_basetypes): Return false in case of ill-formed
23         redefinition.
25 2010-05-19  Jason Merrill  <jason@redhat.com>
27         * call.c (reference_binding): Use cp_build_qualified_type_real
28         and cp_type_quals consistently.
29         (add_function_candidate): Likewise.
30         (build_conditional_expr): Likewise.
31         (convert_like_real): Likewise.
32         (type_passed_as): Likewise.
33         * class.c (add_method): Likewise.
34         (same_signature_p): Likewise.
35         (layout_class_type): Likewise.
36         * decl.c (cxx_init_decl_processing): Likewise.
37         (cp_fname_init): Likewise.
38         (grokdeclarator): Likewise.
39         * decl2.c (cp_reconstruct_complex_type): Likewise.
40         * init.c (build_new_1): Likewise.
41         * method.c (do_build_copy_constructor): Likewise.
42         (implicitly_declare_fn): Likewise.
43         * pt.c (tsubst_aggr_type): Likewise.
44         (tsubst): Likewise.
45         * rtti.c (init_rtti_processing): Likewise.
46         (build_headof): Likewise.
47         (build_dynamic_cast_1): Likewise.
48         (tinfo_base_init): Likewise.
49         (emit_support_tinfos): Likewise.
50         * semantics.c (capture_decltype): Likewise.
51         * tree.c (cv_unqualified): Likewise.
52         * typeck.c (composite_pointer_type): Likewise.
53         (string_conv_p): Likewise.
55         * mangle.c (write_CV_qualifiers_for_type): Tweak.
57         * call.c (initialize_reference): Use CP_TYPE_CONST_P.
58         * decl.c (start_decl): Likewise.
59         * semantics.c (finish_compound_literal): Likewise.
60         * typeck.c (check_return_expr): Use CP_TYPE_VOLATILE_P.
61         (cp_type_readonly): Remove.
62         * cp-tree.h: Remove declaration.
64         * typeck.c (merge_types): Preserve memfn quals.
66         * decl.c (grokdeclarator): Don't check quals on fn type.
67         * typeck.c (cp_apply_type_quals_to_decl): Likewise.
68         * tree.c (cp_build_qualified_type_real): Simplify qualifier checking.
70         PR c++/44193
71         * typeck.c (type_memfn_quals): New fn.
72         (apply_memfn_quals): New fn.
73         (cp_type_quals): Return TYPE_UNQUALIFIED for FUNCTION_TYPE.
74         (cp_type_readonly): Use cp_type_quals.
75         * cp-tree.h: Add declarations.
76         * tree.c (cp_build_qualified_type_real): Don't set, but do
77         preserve, quals on FUNCTION_TYPE.
78         (strip_typedefs): Use apply_memfn_quals and type_memfn_quals.
79         * decl.c (build_ptrmem_type): Likewise.
80         (grokdeclarator): Likewise.
81         (static_fn_type): Likewise.
82         * decl2.c (change_return_type): Likewise.
83         (cp_reconstruct_complex_type): Likewise.
84         * pt.c (tsubst_function_type): Likewise.
85         (unify): Likewise.
86         (tsubst): Likewise.  Drop special FUNCTION_TYPE substitution code.
88 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
90         * tree.c (build_min_non_dep_call_vec): Update comment.
92 2010-05-17  Jason Merrill  <jason@redhat.com>
94         * call.c (struct z_candidate): Add explicit_targs field.
95         (add_template_candidate_real): Set it.
96         (build_over_call): Use it to control init-list warning.
98         PR c++/44157
99         * call.c (build_over_call): Limit init-list deduction warning to
100         cases where the argument is actually an init-list.
102         PR c++/44158
103         * call.c (build_over_call): Don't do bitwise copy for move ctor.
105 2010-05-17  Dodji Seketeli  <dodji@redhat.com>
106             Jason Merrill  <jason@redhat.com>
108         PR c++/44108
109         * decl.c (compute_array_index_type): Call mark_rvalue_use.
111 2010-05-15  Jason Merrill  <jason@redhat.com>
113         * cp-tree.h (TYPE_NOEXCEPT_P): New macro.
114         * except.c (begin_eh_spec_block): Use MUST_NOT_THROW_EXPR if
115         TYPE_NOEXCEPT_P.
116         (finish_eh_spec_block): Adjust.
118 2010-05-15  Jakub Jelinek  <jakub@redhat.com>
120         PR c++/44148
121         * pt.c (tsubst): Unshare template argument.
123 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
125         * decl.c: Include tree-iterator.h, as fixup for tree-inline.h changes.
126         * Make-lang.in: Fix dependencies accordingly.
128 2010-05-14  Jason Merrill  <jason@redhat.com>
130         C++ DR 475
131         * except.c (build_throw): Simplify, adjust for DR 475.
133         PR c++/44127
134         * except.c (dtor_nothrow): Return nonzero for type with
135         trivial destructor.
137         PR c++/44127
138         * cp-gimplify.c (gimplify_must_not_throw_expr): Use
139         gimple_build_eh_must_not_throw.
141 2010-05-14  Martin Jambor  <mjambor@suse.cz>
143         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
144         and define.
146 2010-05-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
148         * call.c (build_new_method_call): Change warning text.
149         * typeck2.c (build_functional_cast): Change error text.
151 2010-05-14  Shujing Zhao  <pearly.zhao@oracle.com>
153         PR c++/30566
154         * name-lookup.c (pushdecl_maybe_friend): Avoid the warnings about
155         shadowing the outer parameter or variables by the declaration of
156         nested function in nested structure or class. Warn the shadowing by
157         the declaration of nested lambda expression.
159 2010-05-13  Jason Merrill  <jason@redhat.com>
161         * typeck.c (cp_build_array_ref): Factor out from...
162         (build_array_ref): ...here.  Drop complain parm.
163         (build_new_op): Adjust.
164         * class.c (build_vtbl_ref_1): Adjust.
165         * decl2.c (grok_array_decl): Adjust.
166         * cp-tree.h: Adjust prototypes.
168 2010-05-13  Jan Hubicka  <jh@suse.cz>
170         * decl.c (cp_finish_decl): Do not worry about used attribute.
172 2010-05-12  Jason Merrill  <jason@redhat.com>
174         * typeck.c (build_array_ref): Take complain parm.
175         * cp-tree.h: Add it to prototype.
176         * call.c (build_new_op): Pass it.
177         * class.c (build_vtbl_ref): Pass it.
178         * decl2.c (grok_array_decl): Pass it.
180         PR bootstrap/44048
181         PR target/44099
182         * cp-tree.def (NULLPTR_TYPE): Remove.
183         * cp-tree.h (NULLPTR_TYPE_P): New.
184         (SCALAR_TYPE_P): Use it.
185         (nullptr_type_node): New.
186         (cp_tree_index): Add CPTI_NULLPTR_TYPE.
187         * decl.c (cxx_init_decl_processing): Call record_builtin_type on
188         nullptr_type_node.
189         * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE.
190         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
191         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
192         * mangle.c (write_type): Likewise.
193         * name-lookup.c (arg_assoc_type): Likewise.
194         * typeck.c (build_reinterpret_cast_1): Likewise.
195         * rtti.c (typeinfo_in_lib_p): Likewise.
196         (emit_support_tinfos): Remove local nullptr_type_node.
198         * cp-tree.h (UNKNOWN_TYPE): Remove.
199         * decl.c (cxx_init_decl_processing): Use LANG_TYPE instead.
200         * error.c (dumy_type, dump_type_prefix, dump_type_suffix): Likewise.
201         * typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
202         * class.c (instantiate_type): Check unknown_type_node rather than
203         UNKNOWN_TYPE.
204         * name-lookup.c (maybe_push_decl): Likewise.
205         * rtti.c (get_tinfo_decl_dynamic): Likewise.
206         (get_typeid): Likewise.
207         * semantics.c (finish_offsetof): Likewise.
209         PR c++/20669
210         * call.c (add_template_candidate_real): If deduction fails, still
211         add the template as a non-viable candidate.
212         (equal_functions): Handle template candidates.
213         (print_z_candidate): Likewise.
214         (print_z_candidates): Likewise.
215         (build_new_function_call): Likewise.
217         * cp-tree.h (LOOKUP_LIST_ONLY): New.
218         * call.c (add_candidates): Enforce it.
219         (build_new_method_call): Try non-list ctor if no viable list ctor.
220         (build_user_type_conversion_1): Likewise.
222         * call.c (add_candidates): Distinguish between type(x) and
223         x.operator type().
224         (convert_class_to_reference): Set LOOKUP_NO_CONVERSION.
225         (build_new_method_call): Give better error for conversion op.
227         * call.c (add_candidates): Add first_arg and return_type parms.
228         Add special constructor/conversion op handling.
229         (convert_class_to_reference): Use it.
230         (build_user_type_conversion_1): Likewise.
231         (build_op_call): Likewise.
232         (build_new_method_call): Likewise.
233         (build_new_op): Adjust.
234         (perform_overload_resolution): Adjust.
236 2010-05-11  Paolo Carlini  <paolo.carlini@oracle.com>
238         PR c++/34272
239         PR c++/43630
240         PR c++/34491
241         * pt.c (process_partial_specialization): Return error_mark_node
242         in case of unused template parameters in partial specialization.
244 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
246         PR c++/44062
247         * semantics.c (finish_expr_stmt): Don't call mark_exp_read here...
248         * cvt.c (convert_to_void): ... but here.  If expr is a COMPOUND_EXPR,
249         look at its second operand.
251 2010-05-10  Jason Merrill  <jason@redhat.com>
253         PR c++/44017
254         * semantics.c (baselink_for_fns): Revert earlier change.
256         PR c++/44045
257         * typeck.c (cp_build_modify_expr): Complain about assignment to
258         array from init list.
260 2010-05-10  Fabien Chêne  <fabien.chene@gmail.com>
262         PR c++/43719
263         * decl.c (check_initializer): strip array type before checking for
264         uninitialized const or ref members.
266 2010-05-07  Fabien Chêne  <fabien.chene@gmail.com>
268         PR c++/43951
269         * init.c (diagnose_uninitialized_cst_or_ref_member_1): Returns the
270         error count. Emit errors only if compain is true.
271         (build_new_1): Do not return error_mark_node if
272         diagnose_uninitialized_cst_or_ref_member_1 does not diagnose any
273         errors. Delay the check for user-provided constructor.
274         (perform_member_init): Adjust.
275         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Change the
276         prototype.
278 2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
279             Jason Merrill  <jason@redhat.com>
281         Add support for C++0x nullptr.
282         * cp-tree.def: Add NULLPTR_TYPE.
283         * cp-tree.h: Add nullptr_node.
284         (cp_tree_index): Add CPTI_NULLPTR.
285         (SCALAR_TYPE_P): Add NULLPTR_TYPE.
286         * call.c (null_ptr_cst_p): Handle nullptr.
287         (standard_conversion): Likewise.
288         (convert_arg_to_ellipsis): Likewise.
289         * mangle.c (write_type): Likewise.
290         * name-lookup.c (arg_assoc_type): Likewise.
291         * parser.c (cp_parser_primary_expression): Likewise.
292         * typeck.c (cp_build_binary_op): Likewise.
293         (build_reinterpret_cast_1): Likewise.
294         * error.c (dump_type): Likewise.
295         (dump_type_prefix, dump_type_suffix): Likewise.
296         * decl.c (cxx_init_decl_processing): Likewise.
297         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
298         * cvt.c (ocp_convert): Likewise.
299         * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put
300         nullptr_t tinfo in libsupc++.
302 2010-05-06  Jason Merrill  <jason@redhat.com>
304         * semantics.c (simplify_aggr_init_expr): Use INIT_EXPR.
306 2010-04-22  Jakub Jelinek <jakub@redhat.com>
307             Dodji Seketeli <dodji@redhat.com>
309         PR c/18624
310         * cp-tree.h (mark_exp_read, rvalue_use, lvalue_use, type_use):
311         Declare ...
312         * expr.c (mark_exp_read, rvalue_use, lvalue_use, type_use): ... new fns.
313         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call type_use.
314         (decay_conversion, perform_integral_promotions): Call rvalue_use.
315         (cp_build_unary_op): Call lvalue_use.
316         * decl.c (unused_but_set_errorcount): New variable.
317         (poplevel): Issue -Wunused-but-set-variable diagnostics.
318         (duplicate_decls): Merge DECL_READ_P flags.
319         (start_cleanup_fn): Set DECL_READ_P flag.
320         (finish_function): Issue -Wunused-but-set-parameter diagnostics.
321         * tree.c (rvalue): Call rvalue_use.
322         * pt.c (convert_nontype_argument): Likewise.
323         * semantics.c (finish_expr_stmt, finish_asm_stmt, finish_typeof,
324         finish_decltype_type): Likewise.
325         * call.c (convert_like_real) <ck_identity, ck_user>: Call rvalue use.
326         (build_x_va_arg, build_new_method_call, build_over_call): Call lvalue_use
327         or rvalue_use depending on the expr.
328         * init.c (build_new, build_delete): Likewise.
329         * rtti.c (build_typeid, build_dynamic_cast_1): Likewise.
331 2010-05-05  Jason Merrill  <jason@redhat.com>
333         PR c++/43787
334         * cp-gimplify.c (cp_gimplify_expr): Remove copies of empty classes.
335         * call.c (build_over_call): Don't try to avoid INIT_EXPR copies here.
337 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
339         PR c++/43028
340         * pt.c (unify): Check each elt for error_mark_node.
342 2010-05-04  Jason Merrill  <jason@redhat.com>
344         PR c++/38064
345         * typeck.c (cp_build_binary_op): Allow enums for <> as well.
347 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
349         PR c++/43705
350         * call.c (build_new_method_call): Return error_mark_node if fns is
351         NULL_TREE.
353 2010-05-03  Dodji Seketeli  <dodji@redhat.com>
355         PR c++/43953
356         * pt.c (most_specialized_class): Pretend we are processing
357         a template decl during the call to coerce_template_parms.
359 2010-05-03  Jason Merrill  <jason@redhat.com>
361         PR c++/42810
362         PR c++/43680
363         * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE
364         from the selected underlying type unless -fstrict-enums.  Set
365         ENUM_UNDERLYING_TYPE to have the restricted range.
366         * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE.
367         * class.c (check_bitfield_decl): Likewise.
369 2010-05-01  H.J. Lu  <hongjiu.lu@intel.com>
371         PR c++/43951
372         * init.c (build_new_1): Revert the accidental checkin in
373         revision 158918.
375 2010-04-30  Jason Merrill  <jason@redhat.com>
377         PR c++/43868
378         * cxx-pretty-print.c (pp_cxx_decl_specifier_seq): Move pmf handling...
379         (pp_cxx_type_specifier_seq): ...here.
381 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
383         * optimize.c, parser.c, mangle.c, cp-tree.h: Do not include varray.h.
384         * Make-lang.in: Don't include varray.h dependency in CXX_TREE_H.
386 2010-04-30  Shujing Zhao  <pearly.zhao@oracle.com>
388         PR c++/43779
389         * typeck.c (warn_args_num): New function.
390         (convert_arguments): Use warn_args_num to print the diagnostic
391         messages. 
393 2010-04-29  Fabien Chêne  <fabien.chene@gmail.com>
395         PR c++/43890
396         * init.c (diagnose_uninitialized_cst_or_ref_member): check for
397         user-provided constructor while recursing.
399 2010-04-28  Manuel López-Ibáñez  <manu@gcc.gnu.org>
401         PR c++/9335
402         * error.c (print_instantiation_partial_context_line): Handle
403         recursive instantiation.
404         (print_instantiation_partial_context): Likewise.
406 2010-04-27  Jason Merrill  <jason@redhat.com>
408         * init.c (perform_member_init): Check CLASS_TYPE_P.
410 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
412         PR c++/29043
413         * init.c (perform_member_init): check for uninitialized const or
414         reference members, including array types.
416 2010-04-24  Jason Merrill  <jason@redhat.com>
418         * tree.c (get_fns): Split out from get_first_fn.
419         * cp-tree.h: Declare it.
420         * search.c (shared_member_p): Use it.
421         * semantics.c (finish_qualified_id_expr): Simplify.
422         (finish_id_expression): Simplify.
424         * semantics.c (finish_non_static_data_member): Call maybe_dummy_object
425         whenever object is NULL_TREE.  Don't do 'this' capture here.
426         (finish_qualified_id_expr): Pass NULL_TREE.
427         (finish_id_expression): Likewise.
428         (lambda_expr_this_capture): Likewise.
430         * semantics.c (finish_qualified_id_expr): Use maybe_dummy_object
431         rather than checking current_class_ref directly.
432         (finish_call_expr): Likewise.
434         PR c++/43856
435         * name-lookup.c (qualify_lookup): Disqualify lambda op().
436         * class.c (current_nonlambda_class_type): New fn.
437         * semantics.c (nonlambda_method_basetype): New.
438         * cp-tree.h: Declare them.
439         * tree.c (maybe_dummy_object): Handle implicit 'this' capture.
441         * semantics.c (baselink_for_fns): Correct BASELINK_BINFO.
443         PR c++/43875
444         * semantics.c (lambda_return_type): Complain about
445         braced-init-list.
447         PR c++/43790
448         * tree.c (cv_unqualified): Handle error_mark_node.
450         PR c++/41468
451         * call.c (convert_like_real) [ck_ambig]: Just return error_mark_node
452         if we don't want errors.
454         PR c++/41468
455         * class.c (convert_to_base): Add complain parameter.  Pass
456         ba_quiet to lookup_base if we don't want errors.
457         (build_vfield_ref): Pass complain to convert_to_base.
458         * call.c (convert_like_real): Likewise.
459         (initialize_reference): Likewise.
460         (perform_direct_initialization_if_possible): Pass complain to
461         convert_like_real.
462         * cp-tree.h: Adjust.
464 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
465             Jason Merrill  <jason@redhat.com>
467         PR c++/42844
468         * decl.c (check_for_uninitialized_const_var): Handle classes that need
469         constructing, too.
470         (check_initializer): Call it for classes that need constructing, too.
471         * class.c (in_class_defaulted_default_constructor): New.
472         * cp-tree.h: Declare it.
474 2010-04-20  Jason Merrill  <jason@redhat.com>
476         PR c++/9335
477         * init.c (constant_value_1): Treat error_mark_node as a constant
478         if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set.
479         * cvt.c (ocp_convert): Handle getting error_mark_node from
480         integral_constant_value.
481         * decl.c (compute_array_index_type): Likewise.
483 2010-04-20  Dodji Seketeli  <dodji@redhat.com>
485         PR c++/43800
486         PR c++/43704
487         * typeck.c (incompatible_dependent_types_p): If one of the
488         compared types if not a typedef then honour their main variant
489         equivalence.
491 2010-04-20  Jakub Jelinek  <jakub@redhat.com>
493         * cp-tree.h (TYPE_REF_IS_RVALUE): Remove.
495 2010-04-19  Dodji Seketeli  <dodji@redhat.com>
497         PR c++/43704
498         * typeck.c (structural_comptypes): Test dependent typedefs
499         incompatibility before testing for their main variant based
500         equivalence.
502 2010-04-19  Jakub Jelinek  <jakub@redhat.com>
504         * cp-tree.h (SCOPED_ENUM_P, UNSCOPED_ENUM_P, SET_SCOPED_ENUM_P): Use
505         ENUM_IS_SCOPED bit instead of TYPE_LANG_FLAG_5.
507 2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
509         * decl.c (cxx_init_decl_processing): Remove second argument in call to
510         build_common_tree_nodes.
512 2010-04-14  Jason Merrill  <jason@redhat.com>
514         PR c++/36625
515         * parser.c (cp_parser_parenthesized_expression_list): Change
516         is_attribute_list parm to int to indicate whether or not to
517         handle initial identifier specially.
518         (cp_parser_attribute_list): Use attribute_takes_identifier_p.
520 2010-04-13  Jason Merrill  <jason@redhat.com>
522         * call.c (type_decays_to): Check MAYBE_CLASS_TYPE_P instead of
523         CLASS_TYPE_P.
524         * parser.c (cp_parser_lambda_expression): Complain about lambda in
525         unevaluated context.
526         * pt.c (iterative_hash_template_arg): Don't crash on lambda.
528 2010-04-12  Jason Merrill  <jason@redhat.com>
530         PR c++/43641
531         * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
532         return value directly.
534         * call.c (type_decays_to): Call cv_unqualified for non-class type.
536 2010-04-12  Fabien Chene  <fabien.chene@gmail.com>
538         PR c++/25811
539         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
540         * init.c (build_new_1): Check for uninitialized const members and
541         uninitialized reference members, when using new without
542         new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
543         (diagnose_uninitialized_cst_or_ref_member): Define, call
544         diagnose_uninitialized_cst_or_ref_member_1.
545         (diagnose_uninitialized_cst_or_ref_member_1): New function.
547 2010-04-12  Richard Guenther  <rguenther@suse.de>
549         PR c++/43611
550         * semantics.c (expand_or_defer_fn_1): Do not keep extern
551         template inline functions.
553 2010-04-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>
555         PR c++/28584
556         * typeck.c (cp_build_c_cast): Warn for casting integer to larger
557         pointer type.
559 2010-04-07  Jason Merrill  <jason@redhat.com>
561         PR c++/43016
562         * decl.c (start_preparsed_function): Do defer nested functions.
564         PR c++/11094, DR 408
565         * cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
566         * decl2.c (finish_static_data_member_decl): Set it.
567         * decl.c (duplicate_decls): Propagate it.
568         * pt.c (tsubst_decl): Don't substitute the domain of an array
569         VAR_DECL if it's set.
570         (regenerate_decl_from_template): Substitute it here.
571         (type_dependent_expression_p): Return true if it's set.
572         * semantics.c (finish_decltype_type): Instantiate such a variable.
573         * typeck.c (cxx_sizeof_expr): Likewise.
574         (strip_array_domain): New.
576         PR c++/43145
577         * name-lookup.c (current_decl_namespace): Non-static.
578         (pop_nested_namespace): Sanity check.
579         * cp-tree.h: Declare current_decl_namespace.
580         * decl.c (grokvardecl): Use it instead of current_namespace.
581         (grokfndecl): Likewise.
583         PR c++/38392
584         * pt.c (tsubst_friend_function): Instatiate a friend that has already
585         been used.
587         * pt.c (print_template_statistics): New.
588         * cp-tree.h: Declare it.
589         * tree.c (cxx_print_statistics): Call it.
591         PR c++/41970
592         * decl.c (grokvardecl): Tweak warning message.
593         (grokfndecl): Likewise.
595 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
597         PR c++/42697
598         *pt.c (tsubst_decl): Get the arguments of a specialization from
599         the specialization template, not from the most general template.
601 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
603         PR c++/40239
604         * typeck2.c (process_init_constructor_record):
605         value-initialize members that are are not explicitely
606         initialized.
608 2010-04-07  Jie Zhang  <jie@codesourcery.com>
610         PR c++/42556
611         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
612         when all of its elements are non-constant and have been split out.
614 2010-04-06  Taras Glek  <taras@mozilla.com>
615             Jason Merrill  <jason@redhat.com>
617         * parser.c (cp_parser_class_specifier): Set class location to that
618         of IDENTIFIER_NODE instead of '{' when possible.
619         * semantics.c (begin_class_definition): Do not overide locations
620         with less precise ones.
622 2010-04-06  Jason Merrill  <jason@redhat.com>
624         PR c++/43648
625         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
627         PR c++/43621
628         * pt.c (maybe_update_decl_type): Check the return value from
629         push_scope.
631 2010-04-01  Jason Merrill  <jason@redhat.com>
633         * decl.c (next_initializable_field): No longer static.
634         * cp-tree.h: Declare it.
635         * call.c (build_aggr_conv): Fail if there are more initializers
636         than initializable fields.
638         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
639         instead of void_zero_node.
641 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
643         PR c++/43558
644         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
645         * pt.c (end_template_parm_list): Store sibling template parms of
646         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
647         (push_template_decl_real): Don't store the containing template decl
648         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
649         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
650         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
651         Simplify the logic.
653 2010-03-30  Jason Merrill  <jason@redhat.com>
655         PR c++/43076
656         * pt.c (push_template_decl_real): Deal better with running out of
657         scopes before running out of template parms.
659         PR c++/41185
660         PR c++/41786
661         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
662         function parameter context.  Don't print an error if parsing
663         tentatively.
665         PR c++/43559
666         * pt.c (more_specialized_fn): Don't control cv-qualifier check
667         with same_type_p.
669 2010-03-26  Jason Merrill  <jason@redhat.com>
671         PR c++/43509
672         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
673         c++0x mode, but not other type-names.
675 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
677         PR c++/43327
678         * pt.c (add_to_template_args): Support NULL ARGS;
679         (most_specialized_class): call coerce_template_parms on
680         template arguments passed to get_class_bindings. Use
681         add_to_template_args.
682         (unify): Handle VAR_DECLs.
684 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
686         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
687         into int.
688         * pt.c (get_template_parms_at_level): Adjust.
690 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
692         PR c++/43206
693         * cp-tree.h (get_template_parms_at_level): Declare ...
694         * pt.c (get_template_parms_at_level): ... new function.
695         * typeck.c (get_template_parms_of_dependent_type): If a template
696         type parm's DECL_CONTEXT isn't yet set, get its siblings from
697         current_template_parms. Use get_template_parms_at_level. Remove
698         useless test.
699         (incompatible_dependent_types_p): If we get empty parms from just one
700         of the template type parms we are comparing then the template parms are
701         incompatible.
703 2010-03-24  Jason Merrill  <jason@redhat.com>
705         PR c++/43502
706         * parser.c (make_declarator): Initialize id_loc.
707         (cp_parser_lambda_declarator_opt): And set it.
709 2010-03-23  Jason Merrill  <jason@redhat.com>
711         Make lambda conversion op and op() non-static.
712         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
713         Also add the thunk function returned by the conversion op.
714         Mark the conversion deleted if the op() is variadic.
715         * decl2.c (mark_used): Give helpful message about deleted conversion.
716         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
717         * semantics.c (finish_this_expr): Adjust.
718         * mangle.c (write_closure_type_name): Adjust.
719         * decl.c (grok_op_properties): Don't allow it.
720         * call.c (build_user_type_conversion_1): No static conversion ops.
721         (build_op_call): Or op().
723         * decl2.c (change_return_type): Fix 'this' quals.
725 2010-03-22  Jason Merrill  <jason@redhat.com>
727         PR c++/43333
728         * tree.c (pod_type_p): Use old meaning in C++98 mode.
730         PR c++/43281
731         * pt.c (contains_auto_r): New fn.
732         (do_auto_deduction): Use it.
733         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
735 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
737         PR c++/43081:
738         * decl2.c (grokfield): Handle invalid initializers for member
739         functions.
741 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
743         PR c++/43375
744         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
745         is NULL.
746         * decl2.c (vague_linkage_p): Likewise.
748 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
750         PR c++/43418
751         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
752         false, in the cp_parser_expression_statement call.
754 2010-03-05  Jason Merrill  <jason@redhat.com>
756         * mangle.c (mangle_decl): Give name collision error even without
757         ASM_OUTPUT_DEF.
759 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
761         * pt.c (process_partial_specialization): Use error_n instead of
762         error.
764 2010-03-03  Jason Merrill  <jason@redhat.com>
766         PR c++/12909
767         * mangle.c (mangle_decl): Handle VAR_DECL, too.
769 2010-03-03  Jason Merrill  <jason@redhat.com>
771         PR c++/12909
772         * mangle.c: Include cgraph.h.
773         (mangle_decl): If the mangled name will change in a later
774         ABI version, make the later mangled name an alias.
775         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
776         * Make-lang.in (mangle.o): Depend on cgraph.h.
777         * method.c (make_alias_for): Handle VAR_DECL, too.
778         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
779         * tree.c (no_linkage_check): Adjust.
780         * decl.c (maybe_commonize_var): Adjust.
781         * cp-tree.h: Adjust.
783 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
785         * pt.c (redeclare_class_template): Use error_n and inform_n.
787 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
789         PR c++/42748
790         * cp-tree.h (push_tinst_level): Declare.
791         (pop_tinst_level): Likewise.
792         * pt.c (push_tinst_level): Give it external linkage.
793         (pop_tinst_level): Likewise.
794         * mangle.c (mangle_decl_string): Set the source location to that
795         of the decl while mangling.
797 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
799         PR c++/42054
800         * pt.c (redeclare_class_template): Return false if there are erroneous
801         template parameters.
803 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
805         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
806         -ftemplate-depth=.
808 2010-02-24  Jason Merrill  <jason@redhat.com>
810         PR c++/12909
811         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
813         * class.c (layout_class_type): Don't give -Wabi warning for a bug
814         in a previous ABI version.
816 2010-02-23  Jason Merrill  <jason@redhat.com>
818         PR c++/43143
819         * typeck2.c (digest_init_r): Accept value init of array.
821 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
823         PR c++/43126
824         * typeck.c (convert_arguments): Update error message.
826 2010-02-22  Mike Stump  <mikestump@comcast.net>
828         PR c++/43125
829         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
831 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
833         PR c++/23510
834         * error.c (print_instantiation_partial_context_line): New.
835         (print_instantiation_partial_context): Print at most 12 contexts,
836         skip the rest with a message.
838 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
840         PR c++/42824
841         * pt.c (lookup_template_class): Better support of specialization
842         of member of class template implicit instantiation.
844 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
846         PR c++/35669
847         * call.c (conversion_null_warnings): Replace -Wconversion with
848         -Wconversion-null.
849         * cvt.c (build_expr_type_conversion): Likewise.
851 2010-02-18  Jason Merrill  <jason@redhat.com>
853         PR c++/42837
854         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
856         PR c++/43108
857         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
858         C build_binary_op.
859         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
860         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
862         PR c++/43070
863         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
865         PR c++/26261
866         PR c++/43101
867         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
868         (maybe_update_decl_type): New fn.
869         * parser.c (cp_parser_init_declarator): Use it.
871         PR c++/43109
872         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
874 2010-02-17  Jason Merrill  <jason@redhat.com>
876         PR c++/43075
877         * call.c (build_over_call): Don't create zero-sized assignments.
878         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
879         * cp-objcp-common.c (cp_expr_size): Remove.
880         * cp-tree.h: Remove prototype.
882         PR c++/43069
883         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
884         decl we looked up doesn't match.
886         PR c++/43093
887         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
888         have an INIT_EXPR anymore.
890         PR c++/43079
891         * pt.c (convert_nontype_argument): Change assert to test.
893 2010-02-16  Jason Merrill  <jason@redhat.com>
895         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
897         PR c++/43031
898         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
899         VIEW_CONVERT_EXPR for conversions between structural equality types
900         that the back end can't tell are the same.
902         PR c++/43036
903         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
904         cv-quals from element here.
905         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
907 2010-02-14  Jason Merrill  <jason@redhat.com>
909         PR c++/41997
910         * semantics.c (finish_compound_literal): Use
911         cp_apply_type_quals_to_decl when creating a static variable.
913 2010-02-12  Jason Merrill  <jason@redhat.com>
915         PR c++/43024
916         * name-lookup.h (current_binding_level): Check for null
917         cp_function_chain.
919 2010-02-12  Jason Merrill  <jason@redhat.com>
921         PR c++/43054
922         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
924 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
926         PR c++/43033
927         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
928         instead of x.
930 2010-02-10  Jason Merrill  <jason@redhat.com>
932         PR c++/41896
933         * semantics.c (outer_lambda_capture_p): Revert.
934         (add_capture): Only finish_member_declaration if
935         we're in the lambda class.
936         (register_capture_members): New.
937         * cp-tree.h: Declare it.
938         * parser.c (cp_parser_lambda_expression): Call it.
940 2010-02-10  Jason Merrill  <jason@redhat.com>
942         PR c++/41896
943         * semantics.c (outer_lambda_capture_p): Use current_function_decl
944         instead of current_class_type.
946 2010-02-10  Jason Merrill  <jason@redhat.com>
948         PR c++/42983, core issue 906
949         * method.c (defaultable_fn_check): Check virtualness.
951 2010-02-10  Jason Merrill  <jason@redhat.com>
953         PR c++/43016
954         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
956 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
958         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
959         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
960         translation.
961         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
962         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
963         (cp_parser_parameter_declaration)
964         (cp_parser_exception_specification_opt)
965         (cp_parser_exception_declaration): Likewise.
966         * pt.c (check_default_tmpl_args): Likewise.
967         * search.c (lookup_field_r): Likewise.
969 2010-02-09  Jason Merrill  <jason@redhat.com>
971         PR c++/42399
972         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
974 2010-02-09  Jason Merrill  <jason@redhat.com>
976         PR c++/42370
977         * decl2.c (change_return_type): New fn.
978         * semantics.c (apply_lambda_return_type): Use it.
979         * cp-tree.h: Declare it.
981 2010-02-05  Richard Guenther  <rguenther@suse.de>
983         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
984         * cp-lang.c: Include gt-cp-cp-lang.h.
985         * config-lang.in (gtfiles): Add cp/cp-lang.c.
987 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
989         PR c++/42915
990         * typeck.c (get_template_parms_of_dependent_type): Try getting
991         the template parameters fromt the type itself first.
993 2010-02-03  Jason Merrill  <jason@redhat.com>
995         PR c++/4926
996         PR c++/38600
997         * mangle.c (write_unqualified_id): Split out from write_expression.
998         (write_unqualified_name): Call it.
999         (write_member_name): Likewise.
1000         (write_expression): Support TEMPLATE_ID_EXPR.
1001         Disambiguate operator names.
1003         PR c++/12909
1004         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
1005         -fabi-version=4.
1007 2010-02-02  Jason Merrill  <jason@redhat.com>
1009         PR c++/41090
1010         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
1011         * optimize.c (clone_body): Remap their initializers when making base
1012         variants.
1013         (maybe_clone_body): Complain if multiple clones aren't safe.
1015 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
1017         PR c++/42758
1018         PR c++/42634
1019         PR c++/42336
1020         PR c++/42797
1021         PR c++/42880
1022         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
1023         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
1024         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
1025         * pt.c (coerce_template_parms, type_unification_real,
1026         expand_template_argument_pack, coerce_template_parameter_pack):
1027         Set the non default template args count.
1028         (current_template_args): Always set non defaulted
1029         template args count when compiled with --enable-checking
1030         (tsubst_template_args, type_unification_real): Propagate the non
1031         defaulted template args count.
1032         * error.c (get_non_default_template_args_count): Renamed
1033         count_non_default_template_args into this. Don't calculate the
1034         non default template argument count anymore. Use the new
1035         accessor macros above to get it.
1036         (dump_template_argument_list, dump_type, dump_decl,
1037         dump_template_parms): Adjust.
1038         * parser.c (cp_parser_template_argument_list): Always set defaulted
1039         template args count when compiled with --enable-checking.
1041 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
1043         * decl.c (redeclaration_error_message): Wrap the return messages into
1044         G_() for easy translation.
1046 2010-01-28  Jason Merrill  <jason@redhat.com>
1048         PR c++/42880
1049         * semantics.c (begin_class_definition): Don't use type_as_string.
1051 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
1053         PR c++/42713
1054         PR c++/42820
1055         * typeck.c (get_template_parms_of_dependent_type): Factorized
1056         this out of incompatible_template_type_parms_p
1057         (incompatible_dependent_types_p): Renamed
1058         incompatible_template_type_parms_p into this. Make it detect
1059         two incompatible dependent typedefs too.
1060         (structural_comptypes): Use incompatible_dependent_types_p.
1061         * pt.c (get_template_info):
1062         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
1064 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
1065             Jason Merrill  <jason@redhat.com>
1067         * mangle.c (write_type): Mangle transparent record as member type.
1068         * semantics.c (begin_class_definition): Recognize decimal classes
1069         and set TYPE_TRANSPARENT_AGGR.
1071 2010-01-20  Jason Merrill  <jason@redhat.com>
1073         PR c++/42338
1074         * mangle.c (write_expression): Handle tree codes that have extra
1075         arguments in the middle-end.
1077 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
1079         PR c++/42038
1080         * except.c (expand_start_catch_block): Deal correctly with
1081         do_begin_catch returning error_mark_node.
1083 2010-01-20  Jason Merrill  <jason@redhat.com>
1085         PR c++/41788
1086         * class.c (layout_class_type): Set packed_maybe_necessary for packed
1087         non-PODs.
1089         PR c++/41920
1090         * semantics.c (build_lambda_object): Call mark_used on captured
1091         variables.
1093         PR c++/40750
1094         * decl.c (grokdeclarator): Clear type_quals for a member function
1095         declared using a typedef.  Don't complain about adding cv-quals
1096         to a function typedef in C++0x mode.
1098 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
1100         * decl.c (create_array_type_for_decl): Remove set but not used
1101         variable error_msg.  Remove break stmts after return stmts.
1103 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
1105         * error.c (dump_template_parms, count_non_default_template_args):
1106         Revert fix of PR c++/42634.
1108 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
1110         PR c++/42634
1111         * error.c (dump_template_parms): Use innermost template
1112         arguments before calling count_non_default_template_args.
1113         (count_non_default_template_args): We are being called with
1114         template innermost arguments now. There is no need to ensure
1115         that again.
1117 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
1119         PR c++/42766
1120         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
1122 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
1124         PR c++/42697
1125         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
1127 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
1129         PR c++/42697
1130         *pt.c (tsubst_decl): Get the arguments of a specialization from
1131         the specialization template, not from the most general template.
1133 2010-01-16  Jason Merrill  <jason@redhat.com>
1135         PR c++/42761
1136         * semantics.c (finish_decltype_type): Within a template, treat
1137         unresolved CALL_EXPR as dependent.
1139 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
1141         * error.c (dump_template_parms,count_non_default_template_args):
1142         Revert changes of PR c++/42634.
1144 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
1146         PR middle-end/42674
1147         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
1148         functions with noreturn attribute.
1150 2010-01-14  Jason Merrill  <jason@redhat.com>
1152         PR c++/42701
1153         * call.c (build_new_method_call): Don't free the vec here.
1155         PR c++/42655
1156         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
1158 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
1160         PR c++/42634
1161         * error.c (dump_template_parms): Use innermost template
1162         arguments before calling count_non_default_template_args.
1163         (count_non_default_template_args): We are being called with
1164         template innermost arguments now. There is no need to ensure
1165         that again.
1167 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
1169         c++/40155
1170         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
1171         arguments that were previously deduced.
1173 2010-01-05  Jason Merrill  <jason@redhat.com>
1175         * pt.c (unify_pack_expansion): Handle deduction from init-list.
1176         * call.c (build_over_call): Don't complain about it.
1178 2010-01-04  Jason Merrill  <jason@redhat.com>
1180         PR c++/42555
1181         * pt.c (tsubst_decl): Don't apply type attributes in place.
1183         PR c++/42567
1184         * semantics.c (describable_type): Remove decltype comment and
1185         semantics.
1189 Copyright (C) 2010 Free Software Foundation, Inc.
1191 Copying and distribution of this file, with or without modification,
1192 are permitted in any medium without royalty provided the copyright
1193 notice and this notice are preserved.