OSDN Git Service

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