OSDN Git Service

* pt.c (print_template_statistics): New.
[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: Include cgraph.h.
189         (mangle_decl): If the mangled name will change in a later
190         ABI version, make the later mangled name an alias.
191         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
192         * Make-lang.in (mangle.o): Depend on cgraph.h.
193         * method.c (make_alias_for): Handle VAR_DECL, too.
194         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
195         * tree.c (no_linkage_check): Adjust.
196         * decl.c (maybe_commonize_var): Adjust.
197         * cp-tree.h: Adjust.
198
199 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
200
201         * pt.c (redeclare_class_template): Use error_n and inform_n.
202
203 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
204
205         PR c++/42748
206         * cp-tree.h (push_tinst_level): Declare.
207         (pop_tinst_level): Likewise.
208         * pt.c (push_tinst_level): Give it external linkage.
209         (pop_tinst_level): Likewise.
210         * mangle.c (mangle_decl_string): Set the source location to that
211         of the decl while mangling.
212
213 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
214
215         PR c++/42054
216         * pt.c (redeclare_class_template): Return false if there are erroneous
217         template parameters.
218
219 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
220
221         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
222         -ftemplate-depth=.
223
224 2010-02-24  Jason Merrill  <jason@redhat.com>
225
226         PR c++/12909
227         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
228
229         * class.c (layout_class_type): Don't give -Wabi warning for a bug
230         in a previous ABI version.
231
232 2010-02-23  Jason Merrill  <jason@redhat.com>
233
234         PR c++/43143
235         * typeck2.c (digest_init_r): Accept value init of array.
236
237 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
238
239         PR c++/43126
240         * typeck.c (convert_arguments): Update error message.
241
242 2010-02-22  Mike Stump  <mikestump@comcast.net>
243
244         PR c++/43125
245         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
246
247 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
248
249         PR c++/23510
250         * error.c (print_instantiation_partial_context_line): New.
251         (print_instantiation_partial_context): Print at most 12 contexts,
252         skip the rest with a message.
253
254 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
255
256         PR c++/42824
257         * pt.c (lookup_template_class): Better support of specialization
258         of member of class template implicit instantiation.
259
260 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
261
262         PR c++/35669
263         * call.c (conversion_null_warnings): Replace -Wconversion with
264         -Wconversion-null.
265         * cvt.c (build_expr_type_conversion): Likewise.
266
267 2010-02-18  Jason Merrill  <jason@redhat.com>
268
269         PR c++/42837
270         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
271
272         PR c++/43108
273         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
274         C build_binary_op.
275         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
276         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
277
278         PR c++/43070
279         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
280
281         PR c++/26261
282         PR c++/43101
283         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
284         (maybe_update_decl_type): New fn.
285         * parser.c (cp_parser_init_declarator): Use it.
286
287         PR c++/43109
288         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
289
290 2010-02-17  Jason Merrill  <jason@redhat.com>
291
292         PR c++/43075
293         * call.c (build_over_call): Don't create zero-sized assignments.
294         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
295         * cp-objcp-common.c (cp_expr_size): Remove.
296         * cp-tree.h: Remove prototype.
297
298         PR c++/43069
299         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
300         decl we looked up doesn't match.
301
302         PR c++/43093
303         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
304         have an INIT_EXPR anymore.
305
306         PR c++/43079
307         * pt.c (convert_nontype_argument): Change assert to test.
308
309 2010-02-16  Jason Merrill  <jason@redhat.com>
310
311         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
312
313         PR c++/43031
314         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
315         VIEW_CONVERT_EXPR for conversions between structural equality types
316         that the back end can't tell are the same.
317
318         PR c++/43036
319         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
320         cv-quals from element here.
321         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
322
323 2010-02-14  Jason Merrill  <jason@redhat.com>
324
325         PR c++/41997
326         * semantics.c (finish_compound_literal): Use
327         cp_apply_type_quals_to_decl when creating a static variable.
328
329 2010-02-12  Jason Merrill  <jason@redhat.com>
330
331         PR c++/43024
332         * name-lookup.h (current_binding_level): Check for null
333         cp_function_chain.
334
335 2010-02-12  Jason Merrill  <jason@redhat.com>
336
337         PR c++/43054
338         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
339
340 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
341
342         PR c++/43033
343         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
344         instead of x.
345
346 2010-02-10  Jason Merrill  <jason@redhat.com>
347
348         PR c++/41896
349         * semantics.c (outer_lambda_capture_p): Revert.
350         (add_capture): Only finish_member_declaration if
351         we're in the lambda class.
352         (register_capture_members): New.
353         * cp-tree.h: Declare it.
354         * parser.c (cp_parser_lambda_expression): Call it.
355
356 2010-02-10  Jason Merrill  <jason@redhat.com>
357
358         PR c++/41896
359         * semantics.c (outer_lambda_capture_p): Use current_function_decl
360         instead of current_class_type.
361
362 2010-02-10  Jason Merrill  <jason@redhat.com>
363
364         PR c++/42983, core issue 906
365         * method.c (defaultable_fn_check): Check virtualness.
366
367 2010-02-10  Jason Merrill  <jason@redhat.com>
368
369         PR c++/43016
370         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
371
372 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
373
374         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
375         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
376         translation.
377         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
378         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
379         (cp_parser_parameter_declaration)
380         (cp_parser_exception_specification_opt)
381         (cp_parser_exception_declaration): Likewise.
382         * pt.c (check_default_tmpl_args): Likewise.
383         * search.c (lookup_field_r): Likewise.
384
385 2010-02-09  Jason Merrill  <jason@redhat.com>
386
387         PR c++/42399
388         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
389
390 2010-02-09  Jason Merrill  <jason@redhat.com>
391
392         PR c++/42370
393         * decl2.c (change_return_type): New fn.
394         * semantics.c (apply_lambda_return_type): Use it.
395         * cp-tree.h: Declare it.
396
397 2010-02-05  Richard Guenther  <rguenther@suse.de>
398
399         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
400         * cp-lang.c: Include gt-cp-cp-lang.h.
401         * config-lang.in (gtfiles): Add cp/cp-lang.c.
402
403 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
404
405         PR c++/42915
406         * typeck.c (get_template_parms_of_dependent_type): Try getting
407         the template parameters fromt the type itself first.
408
409 2010-02-03  Jason Merrill  <jason@redhat.com>
410
411         PR c++/4926
412         PR c++/38600
413         * mangle.c (write_unqualified_id): Split out from write_expression.
414         (write_unqualified_name): Call it.
415         (write_member_name): Likewise.
416         (write_expression): Support TEMPLATE_ID_EXPR.
417         Disambiguate operator names.
418
419         PR c++/12909
420         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
421         -fabi-version=4.
422
423 2010-02-02  Jason Merrill  <jason@redhat.com>
424
425         PR c++/41090
426         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
427         * optimize.c (clone_body): Remap their initializers when making base
428         variants.
429         (maybe_clone_body): Complain if multiple clones aren't safe.
430
431 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
432
433         PR c++/42758
434         PR c++/42634
435         PR c++/42336
436         PR c++/42797
437         PR c++/42880
438         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
439         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
440         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
441         * pt.c (coerce_template_parms, type_unification_real,
442         expand_template_argument_pack, coerce_template_parameter_pack):
443         Set the non default template args count.
444         (current_template_args): Always set non defaulted
445         template args count when compiled with --enable-checking
446         (tsubst_template_args, type_unification_real): Propagate the non
447         defaulted template args count.
448         * error.c (get_non_default_template_args_count): Renamed
449         count_non_default_template_args into this. Don't calculate the
450         non default template argument count anymore. Use the new
451         accessor macros above to get it.
452         (dump_template_argument_list, dump_type, dump_decl,
453         dump_template_parms): Adjust.
454         * parser.c (cp_parser_template_argument_list): Always set defaulted
455         template args count when compiled with --enable-checking.
456
457 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
458
459         * decl.c (redeclaration_error_message): Wrap the return messages into
460         G_() for easy translation.
461
462 2010-01-28  Jason Merrill  <jason@redhat.com>
463
464         PR c++/42880
465         * semantics.c (begin_class_definition): Don't use type_as_string.
466
467 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
468
469         PR c++/42713
470         PR c++/42820
471         * typeck.c (get_template_parms_of_dependent_type): Factorized
472         this out of incompatible_template_type_parms_p
473         (incompatible_dependent_types_p): Renamed
474         incompatible_template_type_parms_p into this. Make it detect
475         two incompatible dependent typedefs too.
476         (structural_comptypes): Use incompatible_dependent_types_p.
477         * pt.c (get_template_info):
478         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
479
480 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
481             Jason Merrill  <jason@redhat.com>
482
483         * mangle.c (write_type): Mangle transparent record as member type.
484         * semantics.c (begin_class_definition): Recognize decimal classes
485         and set TYPE_TRANSPARENT_AGGR.
486
487 2010-01-20  Jason Merrill  <jason@redhat.com>
488
489         PR c++/42338
490         * mangle.c (write_expression): Handle tree codes that have extra
491         arguments in the middle-end.
492
493 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
494
495         PR c++/42038
496         * except.c (expand_start_catch_block): Deal correctly with
497         do_begin_catch returning error_mark_node.
498
499 2010-01-20  Jason Merrill  <jason@redhat.com>
500
501         PR c++/41788
502         * class.c (layout_class_type): Set packed_maybe_necessary for packed
503         non-PODs.
504
505         PR c++/41920
506         * semantics.c (build_lambda_object): Call mark_used on captured
507         variables.
508
509         PR c++/40750
510         * decl.c (grokdeclarator): Clear type_quals for a member function
511         declared using a typedef.  Don't complain about adding cv-quals
512         to a function typedef in C++0x mode.
513
514 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
515
516         * decl.c (create_array_type_for_decl): Remove set but not used
517         variable error_msg.  Remove break stmts after return stmts.
518
519 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
520
521         * error.c (dump_template_parms, count_non_default_template_args):
522         Revert fix of PR c++/42634.
523
524 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
525
526         PR c++/42634
527         * error.c (dump_template_parms): Use innermost template
528         arguments before calling count_non_default_template_args.
529         (count_non_default_template_args): We are being called with
530         template innermost arguments now. There is no need to ensure
531         that again.
532
533 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
534
535         PR c++/42766
536         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
537
538 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
539
540         PR c++/42697
541         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
542
543 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
544
545         PR c++/42697
546         *pt.c (tsubst_decl): Get the arguments of a specialization from
547         the specialization template, not from the most general template.
548
549 2010-01-16  Jason Merrill  <jason@redhat.com>
550
551         PR c++/42761
552         * semantics.c (finish_decltype_type): Within a template, treat
553         unresolved CALL_EXPR as dependent.
554
555 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
556
557         * error.c (dump_template_parms,count_non_default_template_args):
558         Revert changes of PR c++/42634.
559
560 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
561
562         PR middle-end/42674
563         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
564         functions with noreturn attribute.
565
566 2010-01-14  Jason Merrill  <jason@redhat.com>
567
568         PR c++/42701
569         * call.c (build_new_method_call): Don't free the vec here.
570
571         PR c++/42655
572         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
573
574 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
575
576         PR c++/42634
577         * error.c (dump_template_parms): Use innermost template
578         arguments before calling count_non_default_template_args.
579         (count_non_default_template_args): We are being called with
580         template innermost arguments now. There is no need to ensure
581         that again.
582
583 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
584
585         c++/40155
586         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
587         arguments that were previously deduced.
588
589 2010-01-05  Jason Merrill  <jason@redhat.com>
590
591         * pt.c (unify_pack_expansion): Handle deduction from init-list.
592         * call.c (build_over_call): Don't complain about it.
593
594 2010-01-04  Jason Merrill  <jason@redhat.com>
595
596         PR c++/42555
597         * pt.c (tsubst_decl): Don't apply type attributes in place.
598
599         PR c++/42567
600         * semantics.c (describable_type): Remove decltype comment and
601         semantics.
602
603
604 \f
605 Copyright (C) 2010 Free Software Foundation, Inc.
606
607 Copying and distribution of this file, with or without modification,
608 are permitted in any medium without royalty provided the copyright
609 notice and this notice are preserved.