OSDN Git Service

91d8106a8eec0f675c04fac33ddad456e3c08c1a
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2010-04-07  Jason Merrill  <jason@redhat.com>
2
3         * pt.c (print_template_statistics): New.
4         * cp-tree.h: Declare it.
5         * tree.c (cxx_print_statistics): Call it.
6
7         PR c++/41970
8         * decl.c (grokvardecl): Tweak warning message.
9         (grokfndecl): Likewise.
10
11 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
12
13         PR c++/42697
14         *pt.c (tsubst_decl): Get the arguments of a specialization from
15         the specialization template, not from the most general template.
16
17 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
18
19         PR c++/40239
20         * typeck2.c (process_init_constructor_record):
21         value-initialize members that are are not explicitely
22         initialized.
23
24 2010-04-07  Jie Zhang  <jie@codesourcery.com>
25
26         PR c++/42556
27         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
28         when all of its elements are non-constant and have been split out.
29
30 2010-04-06  Taras Glek  <taras@mozilla.com>
31             Jason Merrill  <jason@redhat.com>
32
33         * parser.c (cp_parser_class_specifier): Set class location to that
34         of IDENTIFIER_NODE instead of '{' when possible.
35         * semantics.c (begin_class_definition): Do not overide locations
36         with less precise ones.
37
38 2010-04-06  Jason Merrill  <jason@redhat.com>
39
40         PR c++/43648
41         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
42
43         PR c++/43621
44         * pt.c (maybe_update_decl_type): Check the return value from
45         push_scope.
46
47 2010-04-01  Jason Merrill  <jason@redhat.com>
48
49         * decl.c (next_initializable_field): No longer static.
50         * cp-tree.h: Declare it.
51         * call.c (build_aggr_conv): Fail if there are more initializers
52         than initializable fields.
53
54         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
55         instead of void_zero_node.
56
57 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
58
59         PR c++/43558
60         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
61         * pt.c (end_template_parm_list): Store sibling template parms of
62         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
63         (push_template_decl_real): Don't store the containing template decl
64         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
65         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
66         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
67         Simplify the logic.
68
69 2010-03-30  Jason Merrill  <jason@redhat.com>
70
71         PR c++/43076
72         * pt.c (push_template_decl_real): Deal better with running out of
73         scopes before running out of template parms.
74
75         PR c++/41185
76         PR c++/41786
77         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
78         function parameter context.  Don't print an error if parsing
79         tentatively.
80
81         PR c++/43559
82         * pt.c (more_specialized_fn): Don't control cv-qualifier check
83         with same_type_p.
84
85 2010-03-26  Jason Merrill  <jason@redhat.com>
86
87         PR c++/43509
88         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
89         c++0x mode, but not other type-names.
90
91 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
92
93         PR c++/43327
94         * pt.c (add_to_template_args): Support NULL ARGS;
95         (most_specialized_class): call coerce_template_parms on
96         template arguments passed to get_class_bindings. Use
97         add_to_template_args.
98         (unify): Handle VAR_DECLs.
99
100 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
101
102         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
103         into int.
104         * pt.c (get_template_parms_at_level): Adjust.
105
106 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
107
108         PR c++/43206
109         * cp-tree.h (get_template_parms_at_level): Declare ...
110         * pt.c (get_template_parms_at_level): ... new function.
111         * typeck.c (get_template_parms_of_dependent_type): If a template
112         type parm's DECL_CONTEXT isn't yet set, get its siblings from
113         current_template_parms. Use get_template_parms_at_level. Remove
114         useless test.
115         (incompatible_dependent_types_p): If we get empty parms from just one
116         of the template type parms we are comparing then the template parms are
117         incompatible.
118
119 2010-03-24  Jason Merrill  <jason@redhat.com>
120
121         PR c++/43502
122         * parser.c (make_declarator): Initialize id_loc.
123         (cp_parser_lambda_declarator_opt): And set it.
124
125 2010-03-23  Jason Merrill  <jason@redhat.com>
126
127         Make lambda conversion op and op() non-static.
128         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
129         Also add the thunk function returned by the conversion op.
130         Mark the conversion deleted if the op() is variadic.
131         * decl2.c (mark_used): Give helpful message about deleted conversion.
132         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
133         * semantics.c (finish_this_expr): Adjust.
134         * mangle.c (write_closure_type_name): Adjust.
135         * decl.c (grok_op_properties): Don't allow it.
136         * call.c (build_user_type_conversion_1): No static conversion ops.
137         (build_op_call): Or op().
138
139         * decl2.c (change_return_type): Fix 'this' quals.
140
141 2010-03-22  Jason Merrill  <jason@redhat.com>
142
143         PR c++/43333
144         * tree.c (pod_type_p): Use old meaning in C++98 mode.
145
146         PR c++/43281
147         * pt.c (contains_auto_r): New fn.
148         (do_auto_deduction): Use it.
149         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
150
151 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
152
153         PR c++/43081:
154         * decl2.c (grokfield): Handle invalid initializers for member
155         functions.
156
157 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
158
159         PR c++/43375
160         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
161         is NULL.
162         * decl2.c (vague_linkage_p): Likewise.
163
164 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
165
166         PR c++/43418
167         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
168         false, in the cp_parser_expression_statement call.
169
170 2010-03-05  Jason Merrill  <jason@redhat.com>
171
172         * mangle.c (mangle_decl): Give name collision error even without
173         ASM_OUTPUT_DEF.
174
175 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
176
177         * pt.c (process_partial_specialization): Use error_n instead of
178         error.
179
180 2010-03-03  Jason Merrill  <jason@redhat.com>
181
182         PR c++/12909
183         * mangle.c (mangle_decl): Handle VAR_DECL, too.
184
185 2010-03-03  Jason Merrill  <jason@redhat.com>
186
187         PR c++/12909
188         * mangle.c (mangle_decl): Handle VAR_DECL, too.
189
190 2010-03-03  Jason Merrill  <jason@redhat.com>
191
192         PR c++/12909
193         * mangle.c: Include cgraph.h.
194         (mangle_decl): If the mangled name will change in a later
195         ABI version, make the later mangled name an alias.
196         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
197         * Make-lang.in (mangle.o): Depend on cgraph.h.
198         * method.c (make_alias_for): Handle VAR_DECL, too.
199         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
200         * tree.c (no_linkage_check): Adjust.
201         * decl.c (maybe_commonize_var): Adjust.
202         * cp-tree.h: Adjust.
203
204 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
205
206         * pt.c (redeclare_class_template): Use error_n and inform_n.
207
208 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
209
210         PR c++/42748
211         * cp-tree.h (push_tinst_level): Declare.
212         (pop_tinst_level): Likewise.
213         * pt.c (push_tinst_level): Give it external linkage.
214         (pop_tinst_level): Likewise.
215         * mangle.c (mangle_decl_string): Set the source location to that
216         of the decl while mangling.
217
218 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
219
220         PR c++/42054
221         * pt.c (redeclare_class_template): Return false if there are erroneous
222         template parameters.
223
224 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
225
226         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
227         -ftemplate-depth=.
228
229 2010-02-24  Jason Merrill  <jason@redhat.com>
230
231         PR c++/12909
232         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
233
234         * class.c (layout_class_type): Don't give -Wabi warning for a bug
235         in a previous ABI version.
236
237 2010-02-23  Jason Merrill  <jason@redhat.com>
238
239         PR c++/43143
240         * typeck2.c (digest_init_r): Accept value init of array.
241
242 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
243
244         PR c++/43126
245         * typeck.c (convert_arguments): Update error message.
246
247 2010-02-22  Mike Stump  <mikestump@comcast.net>
248
249         PR c++/43125
250         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
251
252 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
253
254         PR c++/23510
255         * error.c (print_instantiation_partial_context_line): New.
256         (print_instantiation_partial_context): Print at most 12 contexts,
257         skip the rest with a message.
258
259 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
260
261         PR c++/42824
262         * pt.c (lookup_template_class): Better support of specialization
263         of member of class template implicit instantiation.
264
265 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
266
267         PR c++/35669
268         * call.c (conversion_null_warnings): Replace -Wconversion with
269         -Wconversion-null.
270         * cvt.c (build_expr_type_conversion): Likewise.
271
272 2010-02-18  Jason Merrill  <jason@redhat.com>
273
274         PR c++/42837
275         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
276
277         PR c++/43108
278         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
279         C build_binary_op.
280         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
281         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
282
283         PR c++/43070
284         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
285
286         PR c++/26261
287         PR c++/43101
288         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
289         (maybe_update_decl_type): New fn.
290         * parser.c (cp_parser_init_declarator): Use it.
291
292         PR c++/43109
293         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
294
295 2010-02-17  Jason Merrill  <jason@redhat.com>
296
297         PR c++/43075
298         * call.c (build_over_call): Don't create zero-sized assignments.
299         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
300         * cp-objcp-common.c (cp_expr_size): Remove.
301         * cp-tree.h: Remove prototype.
302
303         PR c++/43069
304         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
305         decl we looked up doesn't match.
306
307         PR c++/43093
308         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
309         have an INIT_EXPR anymore.
310
311         PR c++/43079
312         * pt.c (convert_nontype_argument): Change assert to test.
313
314 2010-02-16  Jason Merrill  <jason@redhat.com>
315
316         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
317
318         PR c++/43031
319         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
320         VIEW_CONVERT_EXPR for conversions between structural equality types
321         that the back end can't tell are the same.
322
323         PR c++/43036
324         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
325         cv-quals from element here.
326         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
327
328 2010-02-14  Jason Merrill  <jason@redhat.com>
329
330         PR c++/41997
331         * semantics.c (finish_compound_literal): Use
332         cp_apply_type_quals_to_decl when creating a static variable.
333
334 2010-02-12  Jason Merrill  <jason@redhat.com>
335
336         PR c++/43024
337         * name-lookup.h (current_binding_level): Check for null
338         cp_function_chain.
339
340 2010-02-12  Jason Merrill  <jason@redhat.com>
341
342         PR c++/43054
343         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
344
345 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
346
347         PR c++/43033
348         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
349         instead of x.
350
351 2010-02-10  Jason Merrill  <jason@redhat.com>
352
353         PR c++/41896
354         * semantics.c (outer_lambda_capture_p): Revert.
355         (add_capture): Only finish_member_declaration if
356         we're in the lambda class.
357         (register_capture_members): New.
358         * cp-tree.h: Declare it.
359         * parser.c (cp_parser_lambda_expression): Call it.
360
361 2010-02-10  Jason Merrill  <jason@redhat.com>
362
363         PR c++/41896
364         * semantics.c (outer_lambda_capture_p): Use current_function_decl
365         instead of current_class_type.
366
367 2010-02-10  Jason Merrill  <jason@redhat.com>
368
369         PR c++/42983, core issue 906
370         * method.c (defaultable_fn_check): Check virtualness.
371
372 2010-02-10  Jason Merrill  <jason@redhat.com>
373
374         PR c++/43016
375         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
376
377 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
378
379         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
380         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
381         translation.
382         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
383         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
384         (cp_parser_parameter_declaration)
385         (cp_parser_exception_specification_opt)
386         (cp_parser_exception_declaration): Likewise.
387         * pt.c (check_default_tmpl_args): Likewise.
388         * search.c (lookup_field_r): Likewise.
389
390 2010-02-09  Jason Merrill  <jason@redhat.com>
391
392         PR c++/42399
393         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
394
395 2010-02-09  Jason Merrill  <jason@redhat.com>
396
397         PR c++/42370
398         * decl2.c (change_return_type): New fn.
399         * semantics.c (apply_lambda_return_type): Use it.
400         * cp-tree.h: Declare it.
401
402 2010-02-05  Richard Guenther  <rguenther@suse.de>
403
404         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
405         * cp-lang.c: Include gt-cp-cp-lang.h.
406         * config-lang.in (gtfiles): Add cp/cp-lang.c.
407
408 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
409
410         PR c++/42915
411         * typeck.c (get_template_parms_of_dependent_type): Try getting
412         the template parameters fromt the type itself first.
413
414 2010-02-03  Jason Merrill  <jason@redhat.com>
415
416         PR c++/4926
417         PR c++/38600
418         * mangle.c (write_unqualified_id): Split out from write_expression.
419         (write_unqualified_name): Call it.
420         (write_member_name): Likewise.
421         (write_expression): Support TEMPLATE_ID_EXPR.
422         Disambiguate operator names.
423
424         PR c++/12909
425         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
426         -fabi-version=4.
427
428 2010-02-02  Jason Merrill  <jason@redhat.com>
429
430         PR c++/41090
431         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
432         * optimize.c (clone_body): Remap their initializers when making base
433         variants.
434         (maybe_clone_body): Complain if multiple clones aren't safe.
435
436 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
437
438         PR c++/42758
439         PR c++/42634
440         PR c++/42336
441         PR c++/42797
442         PR c++/42880
443         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
444         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
445         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
446         * pt.c (coerce_template_parms, type_unification_real,
447         expand_template_argument_pack, coerce_template_parameter_pack):
448         Set the non default template args count.
449         (current_template_args): Always set non defaulted
450         template args count when compiled with --enable-checking
451         (tsubst_template_args, type_unification_real): Propagate the non
452         defaulted template args count.
453         * error.c (get_non_default_template_args_count): Renamed
454         count_non_default_template_args into this. Don't calculate the
455         non default template argument count anymore. Use the new
456         accessor macros above to get it.
457         (dump_template_argument_list, dump_type, dump_decl,
458         dump_template_parms): Adjust.
459         * parser.c (cp_parser_template_argument_list): Always set defaulted
460         template args count when compiled with --enable-checking.
461
462 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
463
464         * decl.c (redeclaration_error_message): Wrap the return messages into
465         G_() for easy translation.
466
467 2010-01-28  Jason Merrill  <jason@redhat.com>
468
469         PR c++/42880
470         * semantics.c (begin_class_definition): Don't use type_as_string.
471
472 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
473
474         PR c++/42713
475         PR c++/42820
476         * typeck.c (get_template_parms_of_dependent_type): Factorized
477         this out of incompatible_template_type_parms_p
478         (incompatible_dependent_types_p): Renamed
479         incompatible_template_type_parms_p into this. Make it detect
480         two incompatible dependent typedefs too.
481         (structural_comptypes): Use incompatible_dependent_types_p.
482         * pt.c (get_template_info):
483         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
484
485 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
486             Jason Merrill  <jason@redhat.com>
487
488         * mangle.c (write_type): Mangle transparent record as member type.
489         * semantics.c (begin_class_definition): Recognize decimal classes
490         and set TYPE_TRANSPARENT_AGGR.
491
492 2010-01-20  Jason Merrill  <jason@redhat.com>
493
494         PR c++/42338
495         * mangle.c (write_expression): Handle tree codes that have extra
496         arguments in the middle-end.
497
498 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
499
500         PR c++/42038
501         * except.c (expand_start_catch_block): Deal correctly with
502         do_begin_catch returning error_mark_node.
503
504 2010-01-20  Jason Merrill  <jason@redhat.com>
505
506         PR c++/41788
507         * class.c (layout_class_type): Set packed_maybe_necessary for packed
508         non-PODs.
509
510         PR c++/41920
511         * semantics.c (build_lambda_object): Call mark_used on captured
512         variables.
513
514         PR c++/40750
515         * decl.c (grokdeclarator): Clear type_quals for a member function
516         declared using a typedef.  Don't complain about adding cv-quals
517         to a function typedef in C++0x mode.
518
519 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
520
521         * decl.c (create_array_type_for_decl): Remove set but not used
522         variable error_msg.  Remove break stmts after return stmts.
523
524 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
525
526         * error.c (dump_template_parms, count_non_default_template_args):
527         Revert fix of PR c++/42634.
528
529 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
530
531         PR c++/42634
532         * error.c (dump_template_parms): Use innermost template
533         arguments before calling count_non_default_template_args.
534         (count_non_default_template_args): We are being called with
535         template innermost arguments now. There is no need to ensure
536         that again.
537
538 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
539
540         PR c++/42766
541         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
542
543 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
544
545         PR c++/42697
546         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
547
548 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
549
550         PR c++/42697
551         *pt.c (tsubst_decl): Get the arguments of a specialization from
552         the specialization template, not from the most general template.
553
554 2010-01-16  Jason Merrill  <jason@redhat.com>
555
556         PR c++/42761
557         * semantics.c (finish_decltype_type): Within a template, treat
558         unresolved CALL_EXPR as dependent.
559
560 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
561
562         * error.c (dump_template_parms,count_non_default_template_args):
563         Revert changes of PR c++/42634.
564
565 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
566
567         PR middle-end/42674
568         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
569         functions with noreturn attribute.
570
571 2010-01-14  Jason Merrill  <jason@redhat.com>
572
573         PR c++/42701
574         * call.c (build_new_method_call): Don't free the vec here.
575
576         PR c++/42655
577         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
578
579 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
580
581         PR c++/42634
582         * error.c (dump_template_parms): Use innermost template
583         arguments before calling count_non_default_template_args.
584         (count_non_default_template_args): We are being called with
585         template innermost arguments now. There is no need to ensure
586         that again.
587
588 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
589
590         c++/40155
591         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
592         arguments that were previously deduced.
593
594 2010-01-05  Jason Merrill  <jason@redhat.com>
595
596         * pt.c (unify_pack_expansion): Handle deduction from init-list.
597         * call.c (build_over_call): Don't complain about it.
598
599 2010-01-04  Jason Merrill  <jason@redhat.com>
600
601         PR c++/42555
602         * pt.c (tsubst_decl): Don't apply type attributes in place.
603
604         PR c++/42567
605         * semantics.c (describable_type): Remove decltype comment and
606         semantics.
607
608
609 \f
610 Copyright (C) 2010 Free Software Foundation, Inc.
611
612 Copying and distribution of this file, with or without modification,
613 are permitted in any medium without royalty provided the copyright
614 notice and this notice are preserved.