OSDN Git Service

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