OSDN Git Service

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