OSDN Git Service

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