OSDN Git Service

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