OSDN Git Service

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