OSDN Git Service

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