OSDN Git Service

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