OSDN Git Service

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